使用Java函数实现文件压缩与解压缩功能
发布时间:2023-07-06 08:59:15
文件压缩和解压缩是常见的操作,Java提供了多种类库可以实现这些功能。下面是一个使用Java函数实现文件压缩与解压缩功能的示例。
1. 压缩文件
import java.io.*;
import java.util.zip.*;
public class FileCompressor {
public static void compressFile(String sourceFile, String compressedFile) {
try {
FileInputStream fis = new FileInputStream(sourceFile);
FileOutputStream fos = new FileOutputStream(compressedFile);
ZipOutputStream zipOut = new ZipOutputStream(new BufferedOutputStream(fos));
byte[] buffer = new byte[1024];
int bytesRead;
zipOut.putNextEntry(new ZipEntry(sourceFile));
while ((bytesRead = fis.read(buffer)) != -1) {
zipOut.write(buffer, 0, bytesRead);
}
fis.close();
zipOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
上述代码使用java.util.zip.ZipOutputStream类来创建一个压缩文件,并将源文件内容写入到压缩文件中。
2. 解压缩文件
import java.io.*;
import java.util.zip.*;
public class FileDecompressor {
public static void decompressFile(String compressedFile, String outputFolder) {
try {
FileInputStream fis = new FileInputStream(compressedFile);
ZipInputStream zipIn = new ZipInputStream(new BufferedInputStream(fis));
ZipEntry entry = zipIn.getNextEntry();
while (entry != null) {
String filePath = outputFolder + File.separator + entry.getName();
if (!entry.isDirectory()) {
extractFile(zipIn, filePath);
} else {
File dir = new File(filePath);
dir.mkdir();
}
zipIn.closeEntry();
entry = zipIn.getNextEntry();
}
zipIn.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private static void extractFile(ZipInputStream zipIn, String filePath) throws IOException {
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = zipIn.read(buffer)) != -1) {
bos.write(buffer, 0, bytesRead);
}
bos.close();
}
}
上述代码使用java.util.zip.ZipInputStream类来打开压缩文件,并逐个提取压缩文件中的条目,并将其内容写入到输出文件中。
需要注意的是,上述示例中的压缩文件仅支持单个文件的压缩和解压缩。如果需要支持多个文件的压缩和解压缩,可以将上述代码封装到一个更高级的接口中。
使用示例:
public class Main {
public static void main(String[] args) {
// 压缩文件
FileCompressor.compressFile("source.txt", "compressed.zip");
// 解压缩文件
FileDecompressor.decompressFile("compressed.zip", "output");
}
}
上述示例中,source.txt是要压缩的源文件,compressed.zip是压缩后的文件,output是解压缩后的文件夹。
