我有一个受密码保护的zip文件[以base64编码数据和zip文件名的形式],其中包含一个xml。我希望在不将任何内容写入磁盘的情况下解析xml。在zip4j中如何实现这一点?下面是我试过的。
String docTitle = request.getDocTitle();
byte[] decodedFileData = Base64.getDecoder().decode(request.getBase64Data());
InputStream inputStream = new ByteArrayInputStream(decodedFileData);
try (ZipInputStream zipInputStream = new ZipInputStream(inputStream, password)) {
while ((localFileHeader = zipInputStream.getNextEntry()) != null) {
String fileTitle = localFileHeader.getFileName();
File extractedFile = new File(fileTitle);
try (InputStream individualFileInputStream = org.apache.commons.io.FileUtils.openInputStream(extractedFile)) {
// Call parser
parser.parse(localFileHeader.getFileName(),
individualFileInputStream));
} catch (IOException e) {
// Handle IOException
}
}
} catch (IOException e) {
// Handle IOException
}
把我甩了 java.io.FileNotFoundException: File 'xyz.xml' does not exist
at线 FileUtils.openInputStream(extractedFile)
. 你能告诉我做这件事的正确方法吗?
1条答案
按热度按时间cyej8jka1#
ZipInputStream
保留zip文件的所有内容。每次呼叫zipInputStream.getNextEntry()
传递每个文件的内容并将“指针”移动到下一个条目(文件)。您还可以在移动到下一个条目之前读取文件(zipinputstream.read)。您的案例: