class Copy extends Thread{
RandomAccessFile tager;
RandomAccessFile copy;
long downSize;
/**
*
* @param path 靶文件路径
* @param copy 复制后的文件路径
* @param downTotal 下载的子线程总数
* @param downNumber 当前的子线程编号
*/
public Copy(String path,String copy,int downTotal,int downNumber){
try {
File f1=new File(path);
File f2=new File(copy);
tager=new RandomAccessFile(f1,"r");
this.copy=new RandomAccessFile(f2, "rw");
downSize=f1.length()/downTotal==0?f1.length()/downTotal:(f1.length()/downTotal)+1;
tager.seek(downSize*downNumber);
this.copy.seek(downSize*downNumber);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void run(){
byte[] buf=new byte[1024];
int len=0;
long sum=0;
try {
while((len=tager.read(buf))!=-1&&sum<downSize){
copy.write(buf,0,len);
sum+=len;
}
} catch (IOException e) {
e.printStackTrace();
}
}
}