java基础之多线程复制文件代码演示

来源:互联网 发布:import java.util. 编辑:程序博客网 时间:2024/06/05 02:27
import java.io.BufferedInputStream;//载入包
import java.io.FileInputStream;


public class FileCopy extends Thread{
private String path;//声明路径
private int offlen;//读取的数据偏移量
private int size;//读取的字节总数
private boolean isOK = false//声明boolean类型;
byte[] bs;//字节数组
public FileCopy(String path,int offlen,int size){
this.path = path;
this.offlen = offlen;
this.size = size;

}
public boolean getisOK(){
return isOK;
}
public byte[] getData(){
return bs;
}
public void run(){
try {
//建立一个文件输入流
FileInputStream fis = new FileInputStream(path);
BufferedInputStream bis = new BufferedInputStream(fis);
bis.skip(offlen);
bs = new byte[size];
bis.read(bs);
isOK = true;
bis.close();
} catch (Exception e) {
e.printStackTrace();
}

}

}



import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;


public class WriteThread extends Thread{
private ArrayList<FileCopy> list;//泛型
private String path;
public WriteThread(ArrayList<FileCopy> list,String path){
this.list = list;
this.path = path;
}
public void run(){
try {
FileOutputStream fos = new FileOutputStream(path);
BufferedOutputStream bos = new BufferedOutputStream(fos);

while(!list.isEmpty()){//用循环存进字节数组
FileCopy fc = list.get(0);//指向第一个
if(fc.getisOK()){
byte[] bs = fc.getData();
bos.write(bs);
list.remove(0);//移除第一个数
}
}
bos.flush();//刷新
bos.close();//关闭
} catch (Exception e) {
e.printStackTrace();
}
}
}


import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;


public class WriteThread extends Thread{
private ArrayList<FileCopy> list;
private String path;
public WriteThread(ArrayList<FileCopy> list,String path){
this.list = list;
this.path = path;
}
public void run(){
try {
FileOutputStream fos = new FileOutputStream(path);
BufferedOutputStream bos = new BufferedOutputStream(fos);

while(!list.isEmpty()){
FileCopy fc = list.get(0);
if(fc.getisOK()){
byte[] bs = fc.getData();
bos.write(bs);
list.remove(0);
}
}
bos.flush();
bos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

0 0
原创粉丝点击