gpt4 book ai didi

java - 如何提取和读取作为字节数组发送的 zip 文件的条目

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

简而言之,我正在尝试编写一个方法,该方法以 byte[] 数组的形式接收 Zip 文件,我想要做的是返回 Zip 文件中的条目(文件)数量并进行测试如果它们是 6 个条目。

这是我到目前为止所做的,它在第3行上抛出FileNotFoundException

  public List<ZipEntry> extractZipEntries(byte[] content) throws IOException {
List<ZipEntry> entries = new ArrayList<>();

ZipFile zip = new ZipFile(content.toString()); //Line 3

for (Enumeration<?> e = zip.entries(); e.hasMoreElements();) {
ZipEntry entry = (ZipEntry) e.nextElement();
entries.add(entry);
}
return entries;
}

测试在这里:

 List<ZipEntry> zipEntries = SomeClassName.extractZipEntries(content);
assertTrue(zipEntries.size() == 6);

如果可能的话,建议一种更好的方法,但理想情况下我上面所做的事情在这里是直接的。

谢谢!

最佳答案

由于源是byte[],因此您需要使用ByteArrayInputStream来读取文件。

public List<ZipEntry> extractZipEntries(byte[] content) throws IOException {
List<ZipEntry> entries = new ArrayList<>();

ZipInputStream zi = null;
try {
zi = new ZipInputStream(new ByteArrayInputStream(content));

ZipEntry zipEntry = null;
while ((zipEntry = zi.getNextEntry()) != null) {
entries.add(zipEntry);
}
} finally {
if (zi != null) {
zi.close();
}
}
return entries;
}

关于java - 如何提取和读取作为字节数组发送的 zip 文件的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26673609/

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