使用Java复制文件及显示进度
来源:互联网 发布:asio mac驱动 编辑:程序博客网 时间:2024/04/28 10:27
使用Java复制文件及显示进度
最近在学Java,今天搞了一个复制文件的代码,主要是通过BufferedInputStream和BufferedOutputStream对文件进行复制
没什么技术含量,不过进过我的测试发现,对于1G以上的文件,复制时byte[]数组的大小越大越快,对于小于1G的文件,byte[]数组
的大小在5M左右最快,今本人测试,比Windows的复制最多要快40秒。好了,上代码
/**使用Java复制文件及显示进度Author:ylqHUST*/import java.io.*;public class Copy{public static void main(String[] args)throws Exception//异常直接抛出去了,自己玩玩就不处理了{FileInputStream fis=new FileInputStream("../BT5R3-KDE-32.iso");//要复制文件的路径FileOutputStream fos=new FileOutputStream("BT5R3-KDE-32.iso");//要把文件复制到哪里的路径BufferedInputStream bufis=new BufferedInputStream(fis);BufferedOutputStream bufos=new BufferedOutputStream(fos);byte[] by=new byte[1024*1024*150];//byte[]数组的大小,根据复制文件的大小可以调整,1G一下可以5M。1G以上150M,自己多试试int len;boolean flag=true;long f=System.nanoTime();double begin=bufis.available();while(flag){len=bufis.read(by);if(len==-1){flag=false;continue;}bufos.write(by,0,len);bufos.flush();System.out.print("\r \r"+(1-bufis.available()/begin)*100+"%");//显示进度,如果文件过大//(2G以上,可能一开始会一直显示0.0%,因为算出的数据过小,丢失了,不过还是在复制,要等等}bufos.close();bufis.close();long e=System.nanoTime();System.out.println("\n用时"+(e-f)/1000000000+"秒");//显示总用时}}//上面测试的一个3G左右的文件,用了120秒
转载注明出处
0 0
- 使用Java复制文件及显示进度
- 使用Java复制文件并在控制台显示文件进度
- 复制文件显示进度
- 多线程复制文件显示进度
- 使用API函数复制文件,可显示进度。
- 使用C#在进度条中显示复制文件的进度
- 使用C#在进度条中显示复制文件的进度
- 使用C#在进度条中显示复制文件的进度
- 使用C#在进度条中显示复制文件的进度
- 使用C#在进度条中显示复制文件的进度
- 使用C#在进度条中显示复制文件的进度
- 使用C#在进度条中显示复制文件的进度
- 使用C#在进度条中显示复制文件的进度
- 使用C#在进度条中显示复制文件的进度
- 使用C#在进度条中显示复制文件的进度
- [vc]复制文件时显示复制进度
- 文件上传及进度显示
- 使用多线程实现文件的复制功能,并在控制台显示复制的进度,进度以百分比表示。
- 邻接矩阵的练习
- javascript 文本下拉提示
- 下沙小面的(2)
- [leetcode]Search in Rotated Sorted Array II
- 2000 ASCII码排序
- 使用Java复制文件及显示进度
- 一则简单的Windows共享内存IPC代码
- android EditText自定义样式
- ArcGIS API for Javascript 实现在线要素编辑(二)
- Winform 保存修改后的配置
- eclipse、tomcat集成部署工程
- 第四章 多维数组 思维导图
- hdu 2448 Mining Station on the Sea【网络费用流】
- 世界是数字的重点读书笔记(计算机科普知识)