Java 实现zip压缩
时间: 2023-09-28 10:07:25 浏览: 43
您可以使用Java标准库中的java.util.zip包来实现zip压缩。以下是一个简单的示例代码:
```java
import java.io.*;
import java.util.zip.*;
public class ZipUtils {
public static void zip(String sourceFilePath, String zipFilePath) throws IOException {
FileOutputStream fos = new FileOutputStream(zipFilePath);
ZipOutputStream zipOut = new ZipOutputStream(fos);
File fileToZip = new File(sourceFilePath);
zipFile(fileToZip, fileToZip.getName(), zipOut);
zipOut.close();
fos.close();
}
private static void zipFile(File fileToZip, String fileName, ZipOutputStream zipOut) throws IOException {
if (fileToZip.isHidden()) {
return;
}
if (fileToZip.isDirectory()) {
File[] children = fileToZip.listFiles();
for (File childFile : children) {
zipFile(childFile, fileName + "/" + childFile.getName(), zipOut);
}
return;
}
FileInputStream fis = new FileInputStream(fileToZip);
ZipEntry zipEntry = new ZipEntry(fileName);
zipOut.putNextEntry(zipEntry);
byte[] bytes = new byte[1024];
int length;
while ((length = fis.read(bytes)) >= 0) {
zipOut.write(bytes, 0, length);
}
fis.close();
}
}
```
在这个示例代码中,`zip`方法接受要压缩的源文件路径和要生成的zip文件的路径。它使用`FileOutputStream`和`ZipOutputStream`创建了一个新的zip文件,然后调用了`zipFile`方法来压缩源文件。
`zipFile`方法接受要压缩的文件、文件名和一个`ZipOutputStream`对象。如果传入的文件是一个文件夹,它将递归调用`zipFile`来压缩该文件夹中的所有文件。如果传入的文件是一个普通的文件,它将创建一个新的`ZipEntry`对象来表示该文件,并将文件数据写入zip文件中。
请注意,这只是一个基本示例代码,您可能需要根据您的具体需求进行修改。