博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
下载器-http 进度条 文件读写
阅读量:6768 次
发布时间:2019-06-26

本文共 1420 字,大约阅读时间需要 4 分钟。

 

 

 

 
  1. final JButton button = new JButton("下载");  
  2. button.addActionListener(new ActionListener() 
  3.     public void actionPerformed(ActionEvent e) 
  4.     { 
  5.         new Thread() 
  6.         { 
  7.             @Override 
  8.             public void run() 
  9.             { 
  10.                 button.setEnabled(false);//设置按钮在下载过程中不可操作 
  11.                 FileOutputStream fos = null
  12.                 try 
  13.                 { 
  14.                     URL url = new URL(txtFilefjavaindexhtml.getText());//建立HTTP连接 
  15.                     URLConnection conn = url.openConnection();//创建连接对象 
  16.                      
  17.                     int fileSize = conn.getContentLength();//用getContentLength()得到连接对象的文件大小 
  18.                      
  19.                     InputStream is = conn.getInputStream(); 
  20.                     byte[] buffer = new byte[1024]; 
  21.                     int length = 0
  22.                      
  23.                     fos = new FileOutputStream(txtFilefjavaindexhtml_1.getText()); 
  24.                              
  25.                     double downSize = 0
  26.                     while (-1 != (length = is.read(buffer))) 
  27.                     { 
  28.                         downSize += length; 
  29.                         double percent = downSize * 100 / fileSize;//计算下载百分比 
  30.                         fos.write(buffer, 0, length); 
  31.                         progressBar.setValue((int) percent);//设置进度条变化 
  32.                     } 
  33.                 } 
  34.                 catch (MalformedURLException e1) 
  35.                 { 
  36.                     e1.printStackTrace(); 
  37.                 } 
  38.                 catch (IOException e1) 
  39.                 { 
  40.                     e1.printStackTrace(); 
  41.                 } 
  42.                 finally//输出流要记得在fanally关掉 
  43.                 { 
  44.                     button.setEnabled(true);//在finally中恢复按钮可操作 
  45.                     if (null != fos) 
  46.                     { 
  47.                         try 
  48.                         { 
  49.                             fos.close(); 
  50.                         } 
  51.                         catch (IOException e1) 
  52.                         { 
  53.                             e1.printStackTrace(); 
  54.                         } 
  55.                     } 
  56.                 } 
  57.             } 
  58.         }.start(); 
  59.          
  60.     } 
  61. }); 
  62. button.setFont(new Font("宋体", Font.PLAIN, 24)); 
  63. button.setBounds(101649737); 
  64. frame.getContentPane().add(button); 
  65.  
  66. progressBar = new JProgressBar(); 
  67. progressBar.setBounds(15216427237); 
  68. frame.getContentPane().add(progressBar);//进度条按钮 

 

本文转自 glblong 51CTO博客,原文链接:http://blog.51cto.com/glblong/1186762,如需转载请自行联系原作者
你可能感兴趣的文章
ERC721协议详解 --Solidity
查看>>
达观数据王文广:如何玩转自然语言理解和深度学习实践?
查看>>
Keras入门(二)模型的保存、读取及加载
查看>>
详解http-2头部压缩算法
查看>>
Elasticsearch 参考指南(Multi Get API)
查看>>
用java简单分析下比特币区块链
查看>>
美团深度学习系统的工程实践
查看>>
关于css布局、居中的问题以及一些小技巧
查看>>
让你的app体验更丝滑的11种方法!冲击手机应用榜单Top3指日可待
查看>>
制作60fps的高性能动画
查看>>
724. Find Pivot Index
查看>>
Javascript this详解
查看>>
2018杭州云栖大会,梁胜博士的演讲PPT来啦!
查看>>
静态、动态代理和AOP详解(此坑未填)
查看>>
【刷算法】两个链表的第一个公共结点
查看>>
Vue 响应式核心 observer 源码详解 + 实践
查看>>
Linux下Rust环境配置
查看>>
使用CI、headless Browser、mocha对前端代码进行测试
查看>>
Promise学习笔记
查看>>
Gulp脚本
查看>>