0
当使用org.apache.commons.compress
来读取嵌入式档案文件时,我收到了一些非常奇怪的错误,我怀疑这是我的经验不足令我困扰。该输入流是否关闭?
运行我的代码时,我收到各种截断的zip文件错误(以及其他截断文件错误)。我怀疑这是我使用的ArchiveInputStream
private final void handleArchive(String fileName, ArchiveInputStream ais) {
ArchiveEntry archiveEntry = null;
try {
while((archiveEntry = ais.getNextEntry()) != null) {
byte[] buffer = new byte[1024];
while(ais.read(buffer) != -1) {
handleFile(fileName + "/" + archiveEntry.getName(), archiveEntry.getSize(), new ByteArrayInputStream(buffer));
} catch(IOException ioe) {
ioe.printStackTrace();
}
}
当我这样做archiveEntry = ais.getNextEntry()
这是否有效地闭上ais
,是有什么办法可以读取使用公共嵌入压缩归档文件的字节?
说有没有办法猜测到给定的文件使用的归档,而不是为每个档案库创建对象? –
这一切都取决于你想要做什么。你想只阅读一个特定的文件,如果是的话,你知道哪一个?可以使用ArchiveEntry对象访问archieve中的所有文件。 – Filip
我正在阅读可包含任何类型档案的整个文件目录。我想打开每个档案并用它的字节做一些事情(在另一个对象中)。 –