用struts2框架做的网站/长沙优化排名推广
复制视频文件文件。c:–》D:多线程:n个线程
一个文件比较大,分n部分进行复制
提示 RandomAccessFile
//多线程实现同一文件复制
import java.io.File;
import java.io.FileNotFoundException;
import java.io.RandomAccessFile;public class F_13 {public static void main(String[] args) throws Exception {File file = new File("D01.mp4");startThread(30, file.length(), "D01.mp4","D:/s0s.mp4");}/*** 开启多线程复制* * @param threadnum* 线程数* @param fileLength* 文件大小(用于确认每个线程下载多少东西)* @param sourseFilePath* 源文件目录* @param targerFilePath* 目标文件目录*/public static void startThread(int threadnum, long fileLength, String sourseFilePath, String targerFilePath) {System.out.println("================");System.out.println(fileLength);long modLength = fileLength % threadnum;//求余后剩下的一些内存长度System.out.println("modLength:" + modLength);long targetLength = fileLength / threadnum;//每个线程要复制的长度System.out.println("targetLength:" + targetLength);for (int i = 0; i < threadnum; i++) {System.out.println((targetLength * i) + "-----" + (targetLength * (i + 1)));new FileWriteThread((targetLength * i), (targetLength * (i + 1)), sourseFilePath, targerFilePath).start();}if (modLength != 0) {System.out.println("最后的文件写入");System.out.println((targetLength * threadnum) + "-----" + (targetLength * threadnum + modLength));new FileWriteThread((targetLength * threadnum), targetLength * threadnum + modLength - 1, sourseFilePath,targerFilePath).start();}}/*** 写线程:指定文件开始位置、目标位置、源文件、目标文件,*/static class FileWriteThread extends Thread {private long begin;private long end;private RandomAccessFile soursefile;private RandomAccessFile targerFile;public FileWriteThread(long begin, long end, String sourseFilePath, String targerFilePath) {this.begin = begin;this.end = end;try {this.soursefile = new RandomAccessFile(sourseFilePath, "rw");this.targerFile = new RandomAccessFile(targerFilePath, "rw");} catch (FileNotFoundException e) {}}public void run() {try {soursefile.seek(begin);targerFile.seek(begin);int hasRead = 0;byte[] buffer = new byte[2048];while (begin < end && -1 != (hasRead = soursefile.read(buffer))) {// System.out.println("hasRead:"+hasRead);begin += hasRead;targerFile.write(buffer, 0, hasRead);}} catch (Exception e) {e.printStackTrace();} finally {try {soursefile.close();targerFile.close();} catch (Exception e) {}}}}
}