Java - 可以在不解压的情况下修改和解析 gzipped xml 文件吗?

标签 java xml gzip

我有一个 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/

相关文章:

xml - 使用 xsl/xpath 查找 xmlns

unix - Deflate压缩 block 的结构

PHP - 使用 GZIP 压缩静态 css 文件

java - 从通用通配符引用调用方法

java - 创建多对多关系

java - 从 System.in 读入 - Java

java - 阅读 gwt 中 ONPaste 事件的文本

c# - 选择具有特定值的节点

java - Servlet 和映射名称

java - 为什么 ZipFile(file, ZipFile.OPEN_READ) 不适用于 GZip