gpt4 book ai didi

java - 压缩文件创建奇怪的文件归档结构

转载 作者:行者123 更新时间:2023-11-30 11:34:35 26 4
gpt4 key购买 nike

当前文件位置:C:\bearCave\bear.mp3

我想压缩它,使其在 C:\bearCave 中显示为 bear.zip 的 zip 文件。在 bear.zip 中,我只想查看没有中间文件夹的 bear.mp3

换句话说,文件结构应该是:

bear.zip
- bear.mp3

我设法压缩了文件,该文件生成在正确的位置 C:\bearCave。有趣的是,在该 zip 文件中,还有另一个文件夹 bearCave,其中包含我的文件,如下所示:

   bear.zip
- C:
- bearCave
- bear.mp3

编辑 1:一个可能的线索,outfilename=C:\bearCave\bear.zip

这是我的代码:

    String[] filenames = new String[]{file.getPath()};
int dirEnd = (file.getPath()).indexOf(file.getName());
String fileDirectory=file.getPath().substring(0, dirEnd);
Logger.debug("dirEnd="+dirEnd);
Logger.debug("fileDir="+fileDirectory);
String outFilename = fileDirectory + (file.getName()).substring(0, ((file.getName()).length())-4) + ".zip";
Logger.debug("outFile=" + outFilename);
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outFilename));

for (int i=0; i<filenames.length; i++) {
FileInputStream in = new FileInputStream(filenames[i]);

// Add ZIP entry to output stream.
out.putNextEntry(new ZipEntry(filenames[i]));

// Transfer bytes from the file to the ZIP file
int len;
while ((len = in.read(buf)) > 0) {
Logger.debug("len = " + len);
out.write(buf, 0, len);
}

// Complete the entry
out.closeEntry();
in.close();
Logger.debug("entry clsoed");
}

// Complete the ZIP file
out.close();
Logger.debug("zipping complete!");
} catch (IOException e) {
Logger.error(e);
Logger.debug(e);
}

堆栈跟踪

fileName = bear.mp3
filePath = C:\bearCave\bear.mp3
fileDir=C:\bearCave\
outFile=C:\bearCave\bear.zip
len = 1024
len = 1024
len = 1024
len = 1024
len = 1024
len = 1024
len = 1024
len = 1024
len = 1024
len = 1024
len = 1024
len = 1024
len = 1024
len = 508
entry clsoed
zipping Complete!

最佳答案

你的 filenames[] 数组填充了什么?我认为问题出在这一行:

// Add ZIP entry to output stream.
out.putNextEntry(new ZipEntry(filenames[i]));

如我所见,filenames[i] 是您文件的完整路径,ZipEntry 将为您创建这个奇怪的结构,因为它将给定路径解析为它的“自己的”目录结构。尝试仅使用指定的文件名(不带路径组件)创建 ZipEntry

关于java - 压缩文件创建奇怪的文件归档结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15578277/

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