linux多线程复制,java代码实现文件复制
本文实例为大家分享了爪哇多线程实现复制文件的具体代码,供大家参考,具体内容如下
/*** 实现文件复制功能* 多线程实现文件从一个目录复制到另一个目录* @param源文件:给定源文件路径名* @param desPath:复制点文件路径* @return*/
代码实现如下:
包com。图伦。线程;导入Java。io。文件;导入Java。io。filenotfoundexception导入Java。io。随机存取文件;/*** 多线程复制文件*/公共类线程复制文件{ public static void main(String[]args)抛出异常{ File File=new File( d : demo 可儿 测试。txt’);startThread(5,file.length(), d : demo 可儿\test.txt , d : demo 可儿 test1。txt’);} /** * 开启多线程复制* * @param threadnum线程数* * @param文件长度文件大小(用于确认每个线程下载多少东西)* * @param sourseFilePath源文件目录* * @param desFilePath目标文件目录* */public static void start thread(int thread num,long fileLength,String sourseFilePath,String desfile path){ system。出去。println(文件长度);long modLength=文件长度%线程数;系统。出去。println( modLength : modLength);long desLength=filelongth/threadnum;系统。出去。println( desLength : desLength);for(int I=0;我threadnumI){ system。出去。println((desLength * I)-(desLength *(I 1)));新文件写入线程((desLength * I)、(desLength * (i 1))、sourseFilePath、desFilePath).start();} if (modLength!=0) { System.out.println(最后的文件写入);系统。出去。println((desLength * threadnum)-(desLength * threadnum modLength));新文件写入线程((desLength * threadnum),desLength * threadnum modLength 1,sourseFilePath,desFilePath).start();} } /** * 写线程:指定文件开始位置、目标位置、源文件、目标文件,*/静态类FileWriteThread扩展线程二等兵长开始私长端;私有随机存取文件源文件;private RandomAccessFile desFile;公共文件写线程(long begin,long end,String sourseFilePath,String desfile path){ this。begin=开始;this.end=endtry { this。sourse file=新的随机存取文件(sourse file path, rw );这个。des file=new RandomAccessFile(des文件路径, rw );} catch(找不到文件异常e){ } } public void run(){ try { source file。寻求(开始);desfile。寻求(开始);int已读取=0;字节[]缓冲区=新字节[1];while (begin end -1!=(已读取=源文件。read(buffer)){ begin=已读取;desFile.write(缓冲区,0,已读取);} }捕捉(异常e){ e . printstacktrace();}最后{尝试{源文件。close();des文件。close();} catch(异常e) { } } }运行结果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持盛行它。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。