gpt4 book ai didi

java - 如何使用 ZipEntry 读取位于另一个 zip 文件中的一个 zip 文件中的数据?

转载 作者:行者123 更新时间:2023-12-01 12:35:07 43 4
gpt4 key购买 nike

我有一个 zip 文件 (x.zip),其中有另一个 zip 文件 (y.zip)。我需要读取 y.zip 中的文件。如何遍历这两个 zip 文件来读取该文件?

我用来迭代 x.zip 以读取 y.zip 的代码如下。

代码中,“zipX”代表“x.zip”。当遇到“y.zip”时,就满足代码中的“if条件”。这里我需要遍历“zipEntry”并读取其中的文件。

如何实现这一目标?

private void getFileAsBytes(String path, String name) throws IOException {
ZipFile zipX = new ZipFile(path);
Enumeration<? extends ZipEntry> entries = zipX.entries();
while (entries.hasMoreElements())
{
ZipEntry zipEntry = entries.nextElement();
if(zipEntry.getName().contains(name) && zipEntry.getName().endsWith(".zip")) {
InputStream is;
is = zipX.getInputStream(zipEntry);
// Need to iterate through zipEntry here and read data from a file inside it.
break;
}
}
zipX.close();
}

最佳答案

根据ZipFile docs ,需要传入一个File对象或者文件路径;不支持输入流。

考虑到这一点,您可以将该 InputStream 写入临时文件,然后将该文件传递给现有方法:

...
is = zipX.getInputStream(zipEntry);
File tmpDir = new File(System.getProperty("java.io.tmpdir"));
//For production, generate a unique name for the temp file instead of using "temp"!
File tempFile = createTempFile("temp", "zip", tmpDir);
this.getFileAsBytes(tempFile.getPath(), name);
break;
...

关于java - 如何使用 ZipEntry 读取位于另一个 zip 文件中的一个 zip 文件中的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25654475/

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