2014-07-24 1 views
0

아파치 커먼즈 압축 라이브러리는 TarArchiveOutputStream에 TarArchiveEntry를 쓰는 것에 초점을 맞춘 것 같습니다. 그러나 TarArchiveEntry를 만드는 유일한 방법은 File 객체를 사용하는 것 같습니다.Apache Commons 압축 Tarfile에 스트림이나 바이트를 쓸 수 있습니까?

타르에 쓸 파일이 없기 때문에 메모리에 바이트 []가 있거나 스트림이있는 것이 좋습니다. 그리고 나는 타르를 만들 수 있도록 여러 개의 임시 파일을 디스크에 쓰고 싶지 않습니다. 더 나은

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

사용하여 다음 코드 :

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(); 

이 빌드

내가 뭔가를 할 수있는 방법이 있나요 byte[]의 내용과 함께 하나의 파일이 포함 된 원하는 tar 파일

관련 문제