我正在尝试压缩文件夹的内容。解压zip时的含义我不想获取文件夹而是文件夹的内容。内容是各种文件和子文件夹
问题:但是,当我这样做时,创建的zip不会显示我的文件,它只显示文件夹。当我使用不同的解压缩实用程序时,我可以看到文件在那里。感觉就像应用了某种安全设置或者它们被隐藏起来。我需要能够看到文件,因为它导致我的其他程序出现问题。
结构应如下所示
不喜欢这个
以下是我正在使用的代码
//create flat zip
FileOutputStream fileWriter = new FileOutputStream(myfolder +".zip");
ZipOutputStream zip = new ZipOutputStream(fileWriter);
File folder = new File(myfolder);
for (String fileName: folder.list()) {
FileUtil.addFileToZip("", myfolder + "/" + fileName, zip);
}
zip.flush();
zip.close();
//end create zip
这是我的FileUtil中的代码
public static void addFileToZip(String path, String srcFile,ZipOutputStream zip) throws IOException {
File folder = new File(srcFile);
if (folder.isDirectory()) {
addFolderToZip(path, srcFile, zip);
}
else {
byte[] buf = new byte[1024];
int len;
FileInputStream in = new FileInputStream(srcFile);
zip.putNextEntry(new ZipEntry(path + "/" + folder.getName()));
while ((len = in.read(buf)) > 0) {
zip.write(buf, 0, len);
}
zip.closeEntry();
zip.flush();
in.close();
//zip.close();
}
}
public static void addFolderToZip(String path, String srcFolder, ZipOutputStream zip) throws IOException {
File folder = new File(srcFolder);
//System.out.println("Source folder is "+srcFolder+" into file "+folder);
for (String fileName: folder.list()) {
if (path.equals("")) {
addFileToZip(folder.getName(), srcFolder + "/" + fileName, zip);
}
else {
//System.out.println("zipping "+path + "/" + folder.getName()+" and file "+srcFolder + "/" + fileName);
addFileToZip(path + "/" + folder.getName(), srcFolder + "/" + fileName, zip);
}
}
}
感谢您提前提供任何帮助,我觉得这可能只是一个小问题,我可能会在这里失踪。
答案 0 :(得分:3)
在addFileToZip
方法中,您有
zip.putNextEntry(new ZipEntry(path + "/" + folder.getName()));
当"/"
为空时,您会在folder.getName()
后附加path
。这可能是你的问题?
尝试
if (path.equals("")) {
zip.putNextEntry(new ZipEntry(folder.getName()));
}
else {
zip.putNextEntry(new ZipEntry(path + "/" + folder.getName()));
}