JAVA 多线程复制文件显示进度
简单版 可优化很多 抛砖引玉
package com.xxx;
public class T {
public static void main(String[] args) {
String [] s=new String[]{"aa.txt","1.jpg","z.rar"};
Thread [] t=new Thread[s.length];
for (int i = 0; i <s.length ; i++) {
t[i]=new Thread(new X(s[i]),s[i]);
t[i].start();
}
}
}
package com.xxx;
import java.io.*;
import java.text.DecimalFormat;
import static javafx.scene.input.KeyCode.O;
public class X implements Runnable {
String s;
public X(String s) {
this.s = s;
}
@Override
public void run() {
String a = "D:\\";
String b = "E:\\";
File f=new File(a+s);
try {
InputStream in=new FileInputStream(f);
double l=f.length();
OutputStream out=new FileOutputStream(b+s);
byte[] arr=new byte[1024];
int len;
double cd=0.0;
while ((len=in.read(arr))!=-1){
cd = len + cd;
double bfd=cd/l;
DecimalFormat df=new DecimalFormat("0.00%");
String ss=df.format(bfd);
System.out.println(Thread.currentThread().getName()+"进行了"+ss);
if(ss.equals("100.00%")){
System.out.println(Thread.currentThread().getName()+"完成了");
}
out.write(arr,0,len);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}