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();
答案 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[]
的内容。