我正在尝试使用从 zip 文件中读取一些 xml 文件java.util.zip.ZipFile,我希望获得一个输入流,然后我可以使用 sax 解析器对其进行解析,但由于序言错误而不断出现 Sax 异常。这意味着我没有从 inputStream 中得到我期望的结果。
我错过了什么?
if (path.endsWith(".zip")){
ZipFile file = new ZipFile(path);
Enumeration<? extends ZipEntry> entries = file.entries();
while (entries.hasMoreElements()){
methodThatHandlesXmlInputStream(file.getInputStream(entries.nextElement()));
}
}
void methodThatHandlesXmlInputStream(InputStream input){
doSomethingToTheInput(input);
tryToParseXMLFromInput(input); //This is where the exception was thrown
}
重访解决方案: 问题是处理它的方法消耗了InputStream它并试图再次读取它。我了解到最好InputStream从 zip 文件生成单独的 s 并分别处理每个文件。
ZipFile zipFile = new ZipFile(path);
Enumeration<? extends ZipEntry> entries = file.entries();
while (entries.hasMoreElements()){
ZipEntry entry = entries.nextElement();
methodConsumingInput( zipFile.getInputStream(entry) );
anotherMethodConsumingSameInput( zipFile.getInputStream(entry) );
喵喔喔
相关分类