public static void main(String[] args) {
// 要压缩的文件路径
Path sourceFilePath1 = Paths.get("D:\\20240806\\win10系统如何设置开机密码\\0_0123456789.png");
Path sourceFilePath2 = Paths.get("D:\\20240806\\win10系统如何设置开机密码\\1_0123456789.png");
// 压缩后的ZIP文件路径
Path zipFilePath = Paths.get("D:\\20240806\\win10系统如何设置开机密码\\win10系统如何设置开机密码.zip");
try {
// 创建ZIP文件输出流
try (ZipOutputStream zipOut = new ZipOutputStream(Files.newOutputStream(zipFilePath))) {
// 将文件添加到ZIP文件中
addFileToZip(zipOut, sourceFilePath1, sourceFilePath1.getFileName().toString());
addFileToZip(zipOut, sourceFilePath2, sourceFilePath2.getFileName().toString());
System.out.println("Files have been successfully compressed to " + zipFilePath.toString());
} catch (IOException e) {
e.printStackTrace();
}
} catch (InvalidPathException e) {
System.err.println("Invalid file path: " + e.getMessage());
}
}
/**
* 将文件添加到ZIP输出流中
*
* @param zipOut ZIP输出流
* @param filePath 要添加的文件路径
* @param entryName ZIP文件中的条目名称
* @throws IOException 如果发生I/O错误
*/
private static void addFileToZip(ZipOutputStream zipOut, Path filePath, String entryName) throws IOException {
// 创建文件输入流
try (FileInputStream fis = new FileInputStream(filePath.toFile())) {
// 创建ZIP条目
ZipEntry zipEntry = new ZipEntry(entryName);
zipOut.putNextEntry(zipEntry);
// 读取文件内容并写入ZIP输出流
byte[] bytes = new byte[1024];
int length;
while ((length = fis.read(bytes)) >= 0) {
zipOut.write(bytes, 0, length);
}
// 关闭当前ZIP条目
zipOut.closeEntry();
}
}
简单demo,复制直接运行。