我有一个 java 应用程序,它将 RandomAccessFile 写入文件系统。它必须是 RAF,因为有些事情直到最后才知道,然后我会回溯并在文件开头写入一些信息。
我想以某种方式将该文件放入 zip 存档中。我想我可以在最后执行此操作,但这将涉及复制迄今为止已写入的所有数据。由于这些文件可能会变得非常大,因此我更喜欢一种不涉及复制数据的方法。
有没有办法获得像“ZipRandomAccessFile”这样的东西,就像 jdk 中提供的 ZipOutputStream 一样?
它不必只是jdk,我不介意使用第三方库来完成工作。
有什么想法或建议吗?
最佳答案
也许您需要更改文件格式,以便可以按顺序写入。
事实上,由于它是一个 Zip 并且 Zip 可以包含多个条目,因此您可以将顺序数据写入一个 ZipEntry
,并将“仅在完成时”已知的数据写入单独的 ZipEntry
- 这样可以两全其美。
它很容易编写,不必返回到大顺序 block 的开头。它很容易阅读 - 如果消费者在读取更大的资源之前需要知道“标题”数据,他们可以在继续之前读取该 zip 条目中的数据。
关于java - 将随机访问文件透明写入 zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12300233/