Java 使用ICE Tar库对大文件进行Tar
我正在使用ICE焦油库制作焦油文件 我的代码片段是Java 使用ICE Tar库对大文件进行Tar,java,byte,bytearray,tar,Java,Byte,Bytearray,Tar,我正在使用ICE焦油库制作焦油文件 我的代码片段是 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import com.ice.tar.TarEntry; import com.ice.tar.TarOutputStream;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import com.ice.tar.TarEntry;
import com.ice.tar.TarOutputStream;
public class Util {
public static void main(String[] args) {
tar();
}
public static void tar(){
try{
// Output file stream
FileOutputStream dest = new FileOutputStream( "f:/test/test.tar" );
// Create a TarOutputStream
TarOutputStream out = new TarOutputStream( new BufferedOutputStream( dest ) );
// Files to tar
File[] filesToTar=new File[2]; filesToTar[0]=new File("f:/test/myfile1.txt");
filesToTar[1]=new File("f:/test/myfile2.txt");
for(File f:filesToTar){
out.putNextEntry(new TarEntry(f));
BufferedInputStream origin = new BufferedInputStream(new FileInputStream( f ));
int count;
byte data[] = new byte[2048];
while((count = origin.read(data)) != -1) {
out.write(data, 0, count);
}
out.flush();
origin.close();
}
out.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
但是,这只适用于小文件。当我尝试对大文件进行tar时,会出现以下错误:
java.io.IOException: request to write '2048' bytes exceeds size in header of '1495040' bytes
at com.ice.tar.TarOutputStream.write(Unknown Source)
当我试图改变
byte data[]=新字节[2048]
tobyte data[]=新字节[origin.available()]代码>
我有
java.io.IOException: request to write '1495040' bytes exceeds size in header of '1495040' bytes
at com.ice.tar.TarOutputStream.write(Unknown Source)
我不知道为什么会发生这种事。请帮忙
编辑:
我尝试对其进行tar的大文件本身就是一个tar文件。我刚刚尝试了您的代码(即使内部有tar文件),它与javatar 2.5和~200 megs大小的文件兼容。我的错误..我保留了以前生成的错误tar文件,删除后我解决了它。