多线程下载器初级代码
这是一个线程入门级的初级下载代码
1 package xiazai1;
2
3 import java.io.*;
4 import java.text.DecimalFormat;
5 import java.util.Scanner;
6
7 public class Thunder implements Runnable {
8
9 @Override
10 public void run() {
11 //文本扫描
12 Scanner input = new Scanner(System.in);
13 //提示输入下载路径
14 System.out.println("请输入"+Thread.currentThread().getName()+"下载路径");
15 File file1 = new File(input.nextLine());
16 //获取下载文件的长度
17 double leIn = file1.length();
18 //提示输入保存路径
19 System.out.println("请输入"+Thread.currentThread().getName()+"保存路径");
20 File file2 = new File(input.nextLine());
21 try {
22 //创建下载文件
23 if(!file2.exists()){
24 file2.createNewFile();
25 }
26 //打开输入输出流
27 InputStream is = new FileInputStream(file1);
28 OutputStream os = new FileOutputStream(file2);
29 //下载
30 int i ;
31 while((i=is.read()) != -1){
32 os.write(i);
33 //获取已下载的文件长度
34 double leOt = file2.length();
35 //打印线程的下载进度
36 double jinDu = leOt/leIn;
37 DecimalFormat jinDuF = new DecimalFormat("##.##%");
38 System.out.println(Thread.currentThread().getName()+"下载进度:"+jinDuF.format(jinDu));
39 }
40 //关闭输入输出流
41 is.close();
42 os.close();
43 } catch (IOException e){
44 System.out.println("程序出错");
45 e.printStackTrace();
46 }
47 }
48 }