标签:java IO int io new import 拷贝 多线程 startPos
package FileCopyThread; //自建的包,根据个人调整 import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; public class FileCopy { public static void main(String[] args) { int start = (int)System.currentTimeMillis(); try { RandomAccessFile raf = new RandomAccessFile(new File("E:/11.txt"), "r"); int fileLen = (int)raf.length(); int nums = 20; int distance = (int)(fileLen/nums); new ThreadFileCopy(0, distance - 1).start();; for(int i = 1; i <= nums - 2; i++){ new ThreadFileCopy(distance*i, distance*(i+1) - 1).start(); } new ThreadFileCopy(distance*(nums-1), fileLen).start(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } int end = (int)System.currentTimeMillis(); System.out.println("耗时:" + (end - start)); } }
package FileCopyThread; //自建的包根据个人调整 import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; public class ThreadFileCopy extends Thread{ final String oldPath = "E:/11.txt"; final String newPath = "F:/22.txt"; RandomAccessFile oraf = null; RandomAccessFile nraf = null; private int startPos = 0; private int endPos = 0; final int bufSize = 10240 * 5; public ThreadFileCopy(){ } public ThreadFileCopy(int startPos, int endPos){ this.startPos = startPos; this.endPos = endPos; } @Override public void run() { try { oraf = new RandomAccessFile(new File(oldPath), "r"); nraf = new RandomAccessFile(new File(newPath), "rw"); oraf.seek(startPos); nraf.seek(startPos); byte[] bytes = new byte[bufSize]; int len; while(endPos - startPos > 0){ len = (int)((endPos - startPos) > bufSize ? bufSize :(endPos - startPos)); oraf.read(bytes, 0, len); nraf.write(bytes, 0, len); endPos -= len; System.out.println(Thread.currentThread().getName() + "读取了" + len + "个字节"); } oraf.close(); nraf.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { } } }
标签:java,IO,int,io,new,import,拷贝,多线程,startPos 来源: https://www.cnblogs.com/854594834-YT/p/10527481.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。