多线程复制文件
来源:互联网 发布:php 权限管理 数据 编辑:程序博客网 时间:2024/05/16 11:24
package DemoThingTset;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.RandomAccessFile;class LoadThread implements Runnable {String sourceFile;String targetFile;int threadNo;int threadNum;int bufferSize = 1024;long fileSize;public LoadThread(String sourceFile, String targetFile, int threadNo,int threadNum) {super();this.sourceFile = sourceFile;this.targetFile = targetFile;this.threadNo = threadNo;this.threadNum = threadNum;}public void run() {File file = new File(sourceFile);FileInputStream randin = null;//选用FileInputStream是因为其有skip方法,但其没有length方法RandomAccessFile randout = null;//选用RandomAccessFile是因为其有seek方法try {randin = new FileInputStream(file);long blockSize = file.length()/threadNum;long startPoint = blockSize*threadNo;byte[] buffer = new byte[bufferSize];randout = new RandomAccessFile(targetFile, "rw");//出于各种原因,在Android手机调用 skip 方法最终跳过的字节数可能更少一些,所以以此修正// long at = startPoint;// while(at > 0){//long amt = randin.skip(at);//if(amt == -1){//throw new RuntimeException();//}//at -= amt;// }////randin.skip(at); // randout.seek(at); randin.skip(startPoint); randout.seek(startPoint); int temp; while ((temp=randin.read(buffer))>=0) {randout.write(buffer, 0, temp);}} catch (Exception e) {e.printStackTrace();}finally{try {randin.close();randout.close();} catch (Exception e2) {e2.printStackTrace();}}}}public class DemoTest {public static void main(String args[]) throws IOException {String sourceFile="D:/Downloads/aliedit.exe";String targetFile="D:/Downloads/aliedit3.exe";int threadNo;int threadNum=3;for(threadNo=0;threadNo<=threadNum;threadNo++){new Thread(new LoadThread(sourceFile,targetFile,threadNo,threadNum)).start(); }}}
0 0
- JAVA多线程复制文件
- JAVA多线程文件复制
- 用多线程复制文件
- java多线程复制文件
- 多线程复制文件
- 多线程复制文件
- 多线程文件复制
- 多线程复制文件
- Linux 多线程文件复制
- 多线程复制文件
- java多线程复制文件
- 多线程实现文件复制
- Java多线程复制文件
- 多线程复制文件
- RandomAccessFile 多线程的文件复制
- 使用多线程实现文件复制
- 多线程复制文件显示进度
- RandomAccessFile实现多线程文件复制
- 项目4(自己扩充)输出流的自定义
- Hibernate @OneToMany的mappedBy和@JoinColumn总结
- mac上搭建openfire服务器
- 字符串类函数的实现
- Tim Sweeney解释为什么Unreal Engine 4全面转向C++
- 多线程复制文件
- JDK、Eclipse、Myeclipse、Tomcat及插件下载、安装及配置方法
- Flex代码格式化工具 Flexformatter插件 安装与使用
- TabHost的使用(一)
- 安卓学习之路_20140417
- 经典排序算法
- 多线程
- Java中堆、栈、常量池等概念解析
- ps aux命令显示的状态列中的Ss+,Rsl,R+,S<sl都是什么意思呢?