Java函数如何对文件进行压缩和解压缩操作?
发布时间:2023-09-03 01:08:17
在Java中,可以使用java.util.zip包中的类来对文件进行压缩和解压缩操作。以下是一种基本的压缩和解压缩文件的方法:
1. 压缩文件:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class FileCompression {
public static void compressFile(File file, String outputPath) throws IOException {
FileOutputStream fos = new FileOutputStream(outputPath);
ZipOutputStream zipOut = new ZipOutputStream(fos);
FileInputStream fis = new FileInputStream(file);
ZipEntry zipEntry = new ZipEntry(file.getName());
zipOut.putNextEntry(zipEntry);
byte[] bytes = new byte[1024];
int length;
while ((length = fis.read(bytes)) >= 0) {
zipOut.write(bytes, 0, length);
}
zipOut.close();
fis.close();
fos.close();
}
}
2. 解压文件:
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class FileDecompression {
public static void decompressFile(String zipFilePath, String outputPath) throws IOException {
byte[] buffer = new byte[1024];
ZipInputStream zipIn = new ZipInputStream(new FileInputStream(zipFilePath));
ZipEntry entry = zipIn.getNextEntry();
while (entry != null) {
String filePath = outputPath + File.separator + entry.getName();
if (!entry.isDirectory()) {
extractFile(zipIn, filePath);
}
zipIn.closeEntry();
entry = zipIn.getNextEntry();
}
zipIn.close();
}
private static void extractFile(ZipInputStream zipIn, String filePath) throws IOException {
FileOutputStream fos = new FileOutputStream(filePath);
int length;
byte[] buffer = new byte[1024];
while ((length = zipIn.read(buffer)) > 0) {
fos.write(buffer, 0, length);
}
fos.close();
}
}
使用示例:
public class Main {
public static void main(String[] args) {
try {
// 压缩文件
FileCompression.compressFile(new File("input.txt"), "compressed.zip");
// 解压文件
FileDecompression.decompressFile("compressed.zip", "output");
} catch (IOException e) {
e.printStackTrace();
}
}
}
上述代码是基于传统的Java IO进行文件压缩和解压缩操作。在实际应用中,也可以使用更高级的方式,如使用NIO进行文件读写操作,或使用Apache Commons Compress库等第三方库来简化操作。
