gpt4 book ai didi

android - 从 .zip 文件中解压单个文件,在 android 中包含多个文件

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

我试图从非常大的 zip 存档中只获取一个文件(我知道它的名字)。这个存档包括大约 100000 个文件,因为我不想在循环中找到我的文件。我认为这一定是针对这种情况的某种解决方案,类似于 Linux 上的命令。

unzip archive.zip myfile.txt

我写了下面的代码

try  { 
FileInputStream fin = new FileInputStream(rootDir+"/archive.zip");
ZipInputStream zin = new ZipInputStream(fin);
ZipEntry ze = new ZipEntry("myfile.txt");

FileOutputStream fout = new FileOutputStream(rootDir+"/buff/" + ze.getName());
for (int c = zin.read(); c != -1; c = zin.read()) {
fout.write(c);
}

zin.closeEntry();
fout.close();
zin.close();

} catch(Exception e) {
Log.e("Decompress", "unzip", e);
}

此代码在 buff 目录中创建新文件,但此文件为空!请帮我解决这个问题!

感谢您的宝贵时间!

最佳答案

我是 Java 的新手,但 API 文档包含相当多的标准 Java 库信息,包括 java.util.zip .从那里进入 ZipFile条目,您可以向下滚动到方法列表以找到名为 getEntry 的方法.这似乎是您应该开始的路线!

编辑: 请记住,您可能需要在调用时包含目录(例如:“dir\subdirF\subdirW\FileThatYouWant.txt”),因为这似乎是当你一个一个地浏览文件时,文件的命名方式。

编辑 2:此处提供了大量信息:Compressing and Decompressing Data Using Java APIs ,如果你愿意读一点:D。受内存限制,唯一合理的解决方案可能是使用 ZipInputStream对象,AFAIK 将要求您遍历存档中的每个 ZipEntry(平均 50,000 个?),但不需要您将整个文件加载到内存中。就性能而言,我猜想手动单步执行与此利基功能的任何当前实现一样高效。

关于android - 从 .zip 文件中解压单个文件,在 android 中包含多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6998213/

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