简而言之,我试图编写一个将Zip文件作为byte []数组接收的方法,而我想要做的就是返回Zip文件中的条目(文件)数量,并测试它们是否重新6个条目。
这是我到目前为止已经完成,这将引发FileNotFoundException
对line 3
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;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句