我有一个 gzipped xml 文件的数组列表。是否可以查看和操作这些 xml 文件的内容,而无需解压缩它们并占用磁盘空间?如果是这样,用于此任务的正确类是什么?
我知道我可以从 zip 文件的 fileinputstream 创建一个 gzipinputstream 但从那里我不知道该怎么做。我只写了这样的:
GZIPInputStream in = new GZIPInputStream(new FileInputStream(zippedFiles.get(i)));
我需要某种方法来解析 xml 文件中的文本并修改 xml 本身,但同样,提取所有这些内容会占用太多磁盘空间。
最佳答案
您到底要实现什么目标?您可以使用 ByteArrayOutputStream 将文件提取到内存中,并将其转换为字节数组,然后将其转发到 XML 解析器库(不建议将其转换为字符串并传递,因为编码是在内部指定的)因此,XML 文件本身以及到字符串的转换必须由 XML 解析器在内部完成)。大多数 XML 解析器还支持直接从任何 InputStream
读取,因此您可以将您的内容直接传递给它,这可能会进一步减少内存消耗。仅当通过简单地反转所描述的过程将数据写回磁盘空间时,才会占用磁盘空间。不过,由于直接覆盖源文件来替换它,因此不会浪费任何磁盘空间。
关于Java - 可以在不解压的情况下修改和解析 gzipped xml 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47319388/