gpt4 book ai didi

用于压缩文件的 Java api

转载 作者:行者123 更新时间:2023-12-01 15:32:12 25 4
gpt4 key购买 nike

我正在使用 java.util.zip 来压缩 java 中的一些文件。我遇到的问题是压缩文件将为所有父目录创建文件夹。例如,如果我有一个文件位于 C:/folder1/folder2/folder3/file.txt

这将创建一个压缩文件,其中包含名为文件夹 1 的文件夹,然后是文件夹 2,依此类推,直到 file.txt。

我正在寻找的结果是一个压缩文件夹,根目录下只有 file.txt 文件,没有任何文件夹。

这是一些示例代码

BufferedInputStream origin = null;
FileOutputStream dest = new
FileOutputStream("c:\\zip\\myfigs.zip");
ZipOutputStream out = new ZipOutputStream(new
BufferedOutputStream(dest));
//out.setMethod(ZipOutputStream.DEFLATED);
byte data[] = new byte[BUFFER];
// get a list of files from current directory
String files[] = {"C:/folder1/folder2/folder3/file.txt"};

for (int i=0; i<files.length; i++) {
System.out.println("Adding: "+files[i]);
FileInputStream fi = new
FileInputStream(files[i]);
origin = new
BufferedInputStream(fi, BUFFER);
ZipEntry entry = new ZipEntry(files[i]);
out.putNextEntry(entry);
int count;
while((count = origin.read(data, 0,
BUFFER)) != -1) {
out.write(data, 0, count);
}
origin.close();
}
out.close();
} catch(Exception e) {
e.printStackTrace();
}

最佳答案

替换此行

ZipEntry entry = new ZipEntry(files[i]);

ZipEntry entry = new ZipEntry(files[i].substring(files[i].lastIndexOf("/")+1));

创建 zipEntry 时,需要指定文件名而不是完整路径。

编辑:

一种更简洁的方法(就像 Louis Wasserman 评论的那样)是使用 File 对象并获取文件名。这是在压缩文件之前检查文件是否存在的一种方法。

关于用于压缩文件的 Java api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9438055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com