我想用Java创建一个tar归档文件。我有不断创建的文件,我希望工作线程从队列中引用这些文件,并将它们复制到归档中。
我尝试过使用Apache Compression库的TarArchiveOutputStream来做这件事,但是我不希望在整个程序期间保持归档文件的打开(因为除非我完成归档文件,否则它可能会损坏-所以我宁愿成批地附加到它),而且我还没有找到一种好的方法来将它们的库附加到现有的tar归档文件中(他们确实有"ChangeSetPerformer“类,但它基本上只是创建了一个新的tar文件,并且需要完全复制旧的tar文件,这对我来说并不好,就性能而言)。
我还需要库对归档文件的大小没有一个较低的限制(即4g左右是不够的),并且我宁愿避免不得不实际压缩归档文件。
如有任何建议,我们将不胜感激!谢谢。
发布于 2012-03-19 20:54:19
您在此处运行时受tar的限制:http://en.wikipedia.org/wiki/Tar_(file_format)#Random_access
因此,在不复制整个归档的情况下,很难添加或删除单个文件。
发布于 2012-03-19 20:51:17
我使用一个名为Java Tar:http://www.trustice.com/java/tar/的库
这对我很有效。在该包中,查找:
http://www.gjt.org/javadoc/com/ice/tar/TarArchive.html#writeEntry(com.ice.tar.TarEntry
这使您可以在不使用用户级别的流的情况下向文件中添加条目。我不知道文件的大小--但是测试这方面是很简单的事情。
https://stackoverflow.com/questions/9770492
复制相似问题