gpt4 book ai didi

java.util.zip 文件名/目录名中的句点有问题吗?

转载 作者:行者123 更新时间:2023-11-30 05:06:49 25 4
gpt4 key购买 nike

我想解压 iPhone 应用程序 .ipa 文件。这实际上是正常解压的zip文件。但其中实际的应用程序文件是一个以 .app 结尾的文件夹(因为所有 Mac 应用程序实际上都是以 .app 结尾的文件夹)。现在这个句点似乎是 java.util.zip 的一个问题。

public static void main(String[] args) throws IOException {
ZipFile zipFile = new ZipFile("file.zip");
String path = "";

Enumeration files = zipFile.entries();

while (files.hasMoreElements()) {
ZipEntry entry = (ZipEntry) files.nextElement();
if (entry.isDirectory()) {
File file = new File(path + entry.getName());
file.mkdir();
System.out.println("Create dir " + entry.getName());
} else {
File f = new File(entry.getName());
FileOutputStream fos = new FileOutputStream(f); //EXception occurs here
InputStream is = zipFile.getInputStream(entry);
byte[] buffer = new byte[1024];
int bytesRead = 0;
while ((bytesRead = is.read(buffer)) != -1) {
fos.write(buffer, 0, bytesRead);
}
fos.close();
System.out.println("Create File " + entry.getName());
}
}
}

这是我的输出:

Exception in thread "main" java.io.FileNotFoundException: Payload/SMA Jobs.app/06-magnifying-glass.png (No such file or directory)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
at java.io.FileOutputStream.<init>(FileOutputStream.java:131)
at Main.main(Main.java:27)
enter code here

有人知道如何处理这些时期吗?

最佳答案

首先,您应该使用 mkdirs(),而不是 mkdir()。

其次,zip 文件并不总是包含所有目录条目(或按正确的顺序排列它们)。最佳实践是在代码的两个分支中创建目录,因此添加:

    } else {
File f = new File(entry.getName());
f.getParent().mkdirs();

(您应该添加一些检查以确保 getParent() 不为 null 等)。

关于java.util.zip 文件名/目录名中的句点有问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4837116/

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