我可以将流或字节写入Apache Commons Compress Tarfile吗?

时间:2014-07-24 14:15:42

标签: apache file compression tar apache-commons

Apache Commons压缩库似乎专注于将TarArchiveEntry写入TarArchiveOutputStream。但看起来创建TarArchiveEntry的唯一方法是使用File对象。

我没有要写入Tar的文件,我在内存中有byte [],或者最好是stream。而且我不想将一堆临时文件写入磁盘,以便我可以构建一个tar。

我有什么方法可以做类似的事情:

TarEntry entry = new TarEntry(int size, String filename);
entry.write(byte[] fileContents);
TarArchiveOutputStream tarOut = new TarArchiveOutputStream();
tarOut.write(entry);
tarOut.flush();
tarOut.close();

或者,甚至更好......

InputStream nioTarContentsInputStream = .....
TarEntry entry = new TarEntry(int size, String filename);
entry.write(nioTarContentsInputStream);
TarArchiveOutputStream tarOut = new TarArchiveOutputStream();
tarOut.write(entry);
tarOut.flush();
tarOut.close();

1 个答案:

答案 0 :(得分:4)

使用以下代码:

byte[] test1Content = new byte[] { /* Some data */ }; 

TarArchiveEntry entry1 = new TarArchiveEntry("test1.txt");
entry1.setSize(test1Content.length);

TarArchiveOutputStream out = new TarArchiveOutputStream(new FileOutputStream("out.tar"));
out.putArchiveEntry(entry1);
out.write(test1Content);
out.closeArchiveEntry();
out.close();

使用单个文件构建所需的tar文件,其中包含byte[]的内容。