您的位置:首页 > 编程语言 > Java开发

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

2016-08-18 22:09 399 查看
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();
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息