多线程下载器初级代码

这是一个线程入门级的初级下载代码

 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 }

 

posted @ 2016-07-23 09:20  付亚昕  阅读(161)  评论(0编辑  收藏  举报