Java指定window路径下文件压缩
时间: 2023-11-19 14:06:02 浏览: 36
如果你想在 Java 中指定窗口路径下的文件进行压缩,你可以使用 Java 中的 ZipOutputStream 类来进行文件的压缩。以下是一个示例代码,指定了一个窗口路径,将该路径下的所有文件和文件夹压缩为一个 ZIP 文件:
```java
import java.io.*;
import java.util.zip.*;
import javax.swing.*;
public class ZipFolder {
public static void main(String[] args) throws Exception {
// 弹出文件选择对话框,让用户选择要压缩的文件夹
JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int result = chooser.showOpenDialog(null);
if (result != JFileChooser.APPROVE_OPTION) {
return;
}
// 获取用户选择的文件夹路径
String sourceFolderPath = chooser.getSelectedFile().getPath();
String zipFilePath = sourceFolderPath + ".zip"; // 目标 ZIP 文件路径
FileOutputStream fos = new FileOutputStream(zipFilePath);
ZipOutputStream zos = new ZipOutputStream(fos);
File sourceFolder = new File(sourceFolderPath);
addFolderToZip("", sourceFolder, zos);
zos.close();
fos.close();
}
private static void addFolderToZip(String parentPath, File folder, ZipOutputStream zos) throws Exception {
String folderPath = parentPath + folder.getName() + "/";
zos.putNextEntry(new ZipEntry(folderPath));
for (File file : folder.listFiles()) {
if (file.isDirectory()) {
addFolderToZip(folderPath, file, zos);
} else {
FileInputStream fis = new FileInputStream(file);
zos.putNextEntry(new ZipEntry(folderPath + file.getName()));
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) > 0) {
zos.write(buffer, 0, length);
}
fis.close();
}
}
}
}
```
在这个示例代码中,我们使用了 Java 的 Swing 组件 JFileChooser 创建了一个文件选择对话框,让用户选择要压缩的文件夹。然后,我们获取用户选择的文件夹路径,将该路径下的所有文件和文件夹压缩为一个 ZIP 文件。最后,我们将压缩后的文件保存在原始文件夹路径下,文件名为原始文件夹名加上 `.zip` 后缀。运行该程序,你会看到一个文件选择对话框,选择要压缩的文件夹后,程序会自动将其压缩为一个 ZIP 文件。