gpt4 book ai didi

Java util zip 创建 "corrupt"zip 文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:06:16 24 4
gpt4 key购买 nike

我正在压缩目录的内容,但在尝试打开压缩文件时遇到错误。

谁能告诉我我的代码发生了什么?也许我没有分配足够的字节?

查看 zipDirectory() 内部,您会看到我正在压缩包含特殊扩展文件的文件夹。

不确定错误发生在哪里,所以也许有人可以帮助我!

非常感谢

    private void zipDirectory() {

File lazyDirectory = new File(defaultSaveLocation);

File[] files = lazyDirectory.listFiles();

for (File file : files) {

if (file.isDirectory()) {
System.out.println("Zipping up " + file);
zipContents(file);
}
}
}


public static void addToZip(String fileName, ZipOutputStream zos) throws FileNotFoundException, IOException {

System.out.println("Writing '" + fileName + "' to zip file");

File file = new File(fileName);
FileInputStream fis = new FileInputStream(file);
ZipEntry zipEntry = new ZipEntry(fileName);
zos.putNextEntry(zipEntry);

byte[] bytes = new byte[1024];
int length;
while ((length = fis.read(bytes)) >= 0) {
zos.write(bytes, 0, length);
}

zos.closeEntry();
fis.close();

}

public static void zipContents(File dirToZip) {

List<File> fileList = new ArrayList<File>();

File[] filesToZip = dirToZip.listFiles();

for (File zipThis : filesToZip) {

String ext = "";

int i = zipThis.toString().lastIndexOf('.');

if (i > 0) {
ext = zipThis.toString().substring(i+1);
}

if(ext.matches("cpp|bem|gz|h|hpp|pl|pln|ppcout|vec|xml|csv")){
fileList.add(zipThis);
}

}


try {
FileOutputStream fos = new FileOutputStream(dirToZip.getName() + ".zip");
ZipOutputStream zos = new ZipOutputStream(fos);

for (File file : fileList) {

addToZip(file.toString(), zos);

}

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

enter image description here

最佳答案

与 Java 中 IO 流的大多数问题一样,您的错误几乎可以肯定是您没有正确关闭流。您需要添加:

zos.finish(); // good practice
zos.close();

在 for 循环之后。

关于Java util zip 创建 "corrupt"zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17055650/

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