• 利用多线程分割文件


    主要用到的
    RandomAccessFile这个类的
    seek()
    
    
    read()
    
    







    1
    import java.io.File; 2 3 import java.io.FileOutputStream; 4 import java.io.IOException; 5 import java.io.RandomAccessFile; 6 7 public class MultiThreading extends Thread { 8 private File file;// 要分割的文件; 9 private int size;// 每一块的大小 10 private int pos; // 位置的大小 11 private File file01; //分割的文件 12 13 public MultiThreading(File file, int size, int pos, File file01) { 14 super(); 15 this.file = file; 16 this.size = size; 17 this.pos = pos; 18 this.file01 = file01; 19 } 20 21 @Override 22 public void run() { 23 try { 24 segmentation(); 25 } catch (IOException e) { 26 // TODO Auto-generated catch block 27 e.printStackTrace(); 28 } 29 } 30 31 public void segmentation() throws IOException { 32 RandomAccessFile randomAccessFile = new RandomAccessFile(file, "r"); 33 randomAccessFile.seek((int) pos); //设置随机读取的位置 34 byte[] arr = new byte[size]; 35 int read = randomAccessFile.read(arr); //随机读取 36 FileOutputStream fileOutputStream = new FileOutputStream(file01); 37 fileOutputStream.write(arr, 0, read); 38 randomAccessFile.close(); 39 fileOutputStream.close(); 40 } 41 //测试方法如下 42 public static void main(String[] args) throws IOException { 43 int danwei = 1024*1024*10 ; 44 File file2 = new File("F:\系统必备软件.zip"); 45 long length = file2.length(); 46 int unit = (int) ((length + danwei - 1) / danwei); 47 for (int i = 0; i < unit; i++) { 48 File createTempFile = new File("F:\123\" + (100000 + i + 1) + ".tmp"); 49 MultiThreading multiThreading = new MultiThreading(file2, danwei, i * danwei, createTempFile); 50 multiThreading.start(); 51 String name2 = multiThreading.getName(); 52 System.out.println("线程"+name2+"开始运行"); 53 } 54 55 } 56 }
  • 相关阅读:
    iis 500
    无线密码获取
    数据库创建
    系统基础配置指令
    手把手教你用ngrx管理Angular状态
    vue中v-cloak解决刷新或者加载出现闪烁(显示变量)
    HBuilder如何与真机连接
    01 spring boot源码阅读参考
    01 git学习笔记参考
    OAuth2授权基础知识
  • 原文地址:https://www.cnblogs.com/miss3316/p/8474098.html
Copyright © 2020-2023  润新知