在Java中,可以使用java.util.zip
包来处理文件的压缩和解压缩操作。以下是一些示例代码,展示了如何使用这个包来压缩和解压缩文件。
import java.io.*;
import java.util.zip.*;
public static void zipFile(String sourceFile, String zipFileName) throws IOException {
// 创建一个新的ZIP文件
File zipFile = new File(zipFileName);
if (!zipFile.exists()) {
zipFile.createNewFile();
}
// 获取源文件的输入流
FileInputStream fis = new FileInputStream(sourceFile);
// 创建一个ZIP输出流,写入到ZIP文件中
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile));
// 创建一个ZIP条目
ZipEntry ze = new ZipEntry(sourceFile);
zos.putNextEntry(ze);
// 将源文件的内容写入ZIP输出流
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) > 0) {
zos.write(buffer, 0, length);
}
// 关闭ZIP条目和ZIP输出流
zos.closeEntry();
zos.close();
fis.close();
}
public static void unzipFile(String zipFileName, String destDirectory) throws IOException {
// 获取ZIP文件的输入流
FileInputStream fis = new FileInputStream(zipFileName);
// 创建一个ZIP输入流
ZipInputStream zis = new ZipInputStream(fis);
// 获取ZIP文件中的下一个条目
ZipEntry ze = zis.getNextEntry();
while (ze != null) {
// 获取条目的名称
String fileName = ze.getName();
// 如果条目是一个目录,创建一个新的目录
if (fileName.endsWith("/")) {
File dir = new File(destDirectory + File.separator + fileName);
if (!dir.exists()) {
dir.mkdirs();
}
} else {
// 如果条目是一个文件,创建一个新的文件并写入ZIP文件的内容
File outputFile = new File(destDirectory + File.separator + fileName);
if (!outputFile.exists()) {
outputFile.createNewFile();
}
FileOutputStream fos = new FileOutputStream(outputFile);
byte[] buffer = new byte[1024];
int length;
while ((length = zis.read(buffer)) > 0) {
fos.write(buffer, 0, length);
}
// 关闭文件输出流
fos.close();
}
// 获取下一个ZIP条目
ze = zis.getNextEntry();
}
// 关闭ZIP输入流
zis.closeEntry();
zis.close();
fis.close();
}
public static void main(String[] args) {
try {
String sourceFile = "path/to/source/file.txt";
String zipFileName = "path/to/output/archive.zip";
zipFile(sourceFile, zipFileName);
String destDirectory = "path/to/destination/directory";
unzipFile(zipFileName, destDirectory);
} catch (IOException e) {
e.printStackTrace();
}
}
这些示例代码展示了如何使用Java的java.util.zip
包来压缩和解压缩文件。请确保将示例代码中的文件路径替换为您自己的文件路径。