Java学习日记1——多线程拷贝文件
来源:互联网 发布:长春办公软件培训 编辑:程序博客网 时间:2024/06/05 18:57
一、摘要
前面学习了IO流,写了拷贝文件的功能;接着学习了多线程,现在将两个知识结合起来,来实现多线程拷贝文件。
二、代码
package com.softeem.work;import java.io.File;import java.io.FileNotFoundException;import java.io.IOException;import java.io.RandomAccessFile;import java.util.Date;public class ThreadCopyFile extends Thread{private File file;//被拷贝的文件private File dir;//将要拷贝的目录private long start;//当前进程拷贝文件的起始位置private long end;//当前进程拷贝文件的末位置public ThreadCopyFile(File file, File dir, long start,long end) {super();this.file = file;this.dir = dir;this.start = start;this.end = end;}@Overridepublic void run() {RandomAccessFile raf_read = null;RandomAccessFile raf_write = null;int len = 0;int position = 0;long s1 = 0;long s2 = 0;try {raf_read = new RandomAccessFile(file,"r");File targetFile = new File(dir,file.getName());raf_write = new RandomAccessFile(targetFile,"rw");byte[] b = new byte[1024*1024*10];System.out.println("线程"+this.getName()+"准备开始拷贝");System.out.println("线程"+this.getName()+"正在拷贝");raf_read.seek(start);//从start位置读raf_write.seek(start);//从start位置写while((len = raf_read.read(b)) != -1 && position <(end - start)){raf_write.write(b,0,len);position += len;}System.out.println("线程" + this.getName()+ "拷贝完成!");} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}finally{try {if(raf_read != null)raf_read.close();if(raf_write != null)raf_write.close();} catch (IOException e) {e.printStackTrace();}}}public static void main(String[] args) {File file = new File("E:\\原目录\\测试文件.zip");File dir = new File("E:\\测试目录");long size = file.length();int j = 2;//设置线程数for (int i = 0; i < j; i++) {new ThreadCopyFile(file, dir, size*i/j, size*(i+1)/j).start();//根据线程数分割文件}}}
三、结果截图
四、总结
以后继续学习,希望追加进度监控和计时的功能
阅读全文
0 0
- Java学习日记1——多线程拷贝文件
- 黑马程序员_ JAVA学习日记—JAVA中的多线程
- 黑马程序员java学习日记——异常和多线程
- 黑马程序员——学习日记11 java多线程
- 黑马程序员——Java学习日记(七)多线程
- Java学习日记1 接触多线程
- Java基础日记———多线程
- Java学习(1)——(Demo)多线程读取文件
- 多线程下载,拷贝文件java代码
- Java学习日记(6)--多线程
- Java学习日记2 多线程通信
- 黑马程序员-----java多线程(学习日记)
- 【学习日记】java多线程的知识点总结
- 【笨鸟先飞】Java重新学习日记10---多线程
- 黑马程序员——学习日记之--多线程学习总结
- java学习日记1
- Java学习日记1
- java学习日记1
- python分支
- window.onload
- 山东省第八届ACM省赛C firework
- 《数据结构导论》思维导图
- N种方法妙讲LIS算法
- Java学习日记1——多线程拷贝文件
- C语言学习:简单了解一下ctype.h
- python_创建xml文件
- 斐波那契数列
- 经典C/C++面试题
- 从Hadoop到Spark的架构实践
- 页面中产生小三角块的样式
- 【机房重构】策略模式之下机
- 【代码片-1】 WEB应用开发中的Servlet