以下是一个Java中压缩文件为ZIP格式的简单实例代码。这个例子使用了`java.util.zip`包中的`ZipOutputStream`类来实现文件的压缩。
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 ZipFileExample {
public static void main(String[] args) {
String sourceFolderPath = "/path/to/source/folder"; // 源文件夹路径
String zipFilePath = "/path/to/destination/file.zip"; // 压缩文件保存路径
zipFolder(sourceFolderPath, zipFilePath);
}
/**
* 压缩文件夹
*
* @param sourceFolderPath 源文件夹路径
* @param zipFilePath 压缩文件保存路径
*/
public static void zipFolder(String sourceFolderPath, String zipFilePath) {
File sourceFolder = new File(sourceFolderPath);
File[] files = sourceFolder.listFiles();
// 创建ZipOutputStream来写入压缩文件
try (ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipFilePath))) {
for (File file : files) {
if (!file.isDirectory()) { // 只处理文件,不递归处理子文件夹
// 创建ZipEntry,并添加到zip输出流中
ZipEntry zipEntry = new ZipEntry(file.getName());
zipOut.putNextEntry(zipEntry);
// 读取文件内容并写入zip输出流
byte[] bytes = new byte[1024];
int length;
try (FileInputStream fis = new FileInputStream(file)) {
while ((length = fis.read(bytes)) >= 0) {
zipOut.write(bytes, 0, length);
}
}
}
}
zipOut.closeEntry(); // 完成当前zip条目的添加
} catch (IOException e) {
e.printStackTrace();
}
}
}
**注意**:这个示例仅压缩了源文件夹下的直接文件,而不递归地压缩子文件夹中的文件。如果你需要递归地压缩所有子文件夹中的文件,你需要在`zipFolder`方法中添加递归逻辑。
另外,请确保将`sourceFolderPath`和`zipFilePath`变量替换为实际的文件路径。