多线程文件拷贝
来源:互联网 发布:淘宝代购网店怎么开 编辑:程序博客网 时间:2024/06/08 09:37
对于多线程文件拷贝的问题只是在普通的文件拷贝的基础上增加了跳过当前字节数这一个步骤,思路如下(以分为四线程为例):
1、获取文输入,输出流
2、获取当前线程开始、结束位置
3、将输入输出流的起始位置调到当前线程的开始位置
4、申请字节缓冲区
5、判断当前是否读取到内容并且读取的文件长度不超过该线程的长度
6、将读取到的文件写入到目标文件中
7、关闭输入输出流
ThreadCopy类
import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.RandomAccessFile;public class ThreadCopy extends Thread {private File source;// 源文件private File target;// 目标文件private long start;// 当前线程开始位置private long end;// 当前线程结束位置public ThreadCopy(File source, File target, long start, long end) {super();this.source = source;this.target = target;this.start = start;this.end = end;}@Overridepublic void run() {int count = 0;//统计当前线程拷贝的长度RandomAccessFile raf_read = null;RandomAccessFile raf_write = null;try {// 获取文件输入流raf_read =new RandomAccessFile(source,"r");// 获取文件输出流raf_read =new RandomAccessFile(target,"rw");//跳过需要读写字节数raf_read.seek(start);raf_write.seek(start);byte[] b = new byte[1024];int len = 0;while ((len = raf_read.read(b)) != -1 && count <= (end - start) ) {// 记录当前拷贝的进count += len;raf_write.write(b, 0, len);}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {if (raf_read != null) {raf_read.close();}if (raf_write != null) {raf_write.close();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}测试类
import java.io.File;public class Test {public static void main(String[] args) {File source = new File("D:\\搜狗高速下载\\加勒比海盗[英语原声版]_bd.mp4");File dir = new File("c:\\Users\\123\\Desktop",source.getName());long item = source.length()/4;for (int i = 0; i < 4; i++) {new ThreadCopy(source,dir,i*item,(i+1)*item).start();;}}}
阅读全文
0 0
- 多线程拷贝文件
- 多线程拷贝文件
- 多线程拷贝文件
- 多线程实现文件拷贝
- linux 多线程拷贝文件
- 利用多线程拷贝文件
- 6.多线程文件拷贝
- 多线程拷贝文件
- 多线程文件拷贝
- 多线程断点文件拷贝
- 多线程实现文件拷贝
- C# 多线程目录拷贝 文件拷贝
- 多线程文件拷贝整体架构
- 多线程处理文件(拷贝)
- C++ 多线程拷贝文件(demo)
- NSFileHandle拷贝大文件+多线程
- pthread_create 用法多线程文件拷贝。
- 8.多线程文件拷贝(2)
- 51nod 1116 K进制下的大数
- Target runtime Apache Tomcat v6.0 is not defined.错误的完美解决方法
- MySQL视图的使用
- Android输入系统之App跟输入系统建立联系
- 网络编程个人小结
- 多线程文件拷贝
- 统一管理项目中的接口回调
- 响应式实例
- 性能测试实战--linux远程连接配置
- MyBatis 多表联合查询及优化
- Storm流式计算任务提交及分配
- 归并排序的算法应用
- JavaSE-Headfirst Java笔记
- 19个javascript提高编码效率技巧