最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實現(xiàn)文件切片和合并的代碼示例

 更新時間:2019年07月18日 11:24:59   作者:詩波煙雨  
這篇文章主要介紹了java實現(xiàn)文件切片和合并的代碼示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

最近在學習大數(shù)據相關的知識點,其中需要實現(xiàn)文件的切片和合并,完整的java實現(xiàn)代碼,以下貼出個人代碼,僅供參考

首先建一個SplitUtil工具類,在工具類中有三個方法getSplitFile,getWrite,merge

1,文件拆分代碼 

public static void getSplitFile(String file,int count){
    
    //預分配文件所占用的磁盤空間,在磁盤創(chuàng)建一個指定大小的文件,“r”表示只讀,“rw”支持隨機讀寫
    try {
      RandomAccessFile raf = new RandomAccessFile(new File(file), "r");
      //計算文件大小
      long length = raf.length();
      System.out.println(length);
      //計算文件切片后每一份文件的大小
      long maxSize = length / count;
      
      System.out.println(maxSize);
      
      long offset = 0L;//定義初始文件的偏移量(讀取進度)
      //開始切割文件
      for(int i = 0; i < count - 1; i++){ //count-1最后一份文件不處理
        //標記初始化
        long fbegin = offset;
        //分割第幾份文件
        long fend = (i+1) * maxSize;
        //寫入文件
        offset = getWrite(file, i, fbegin, fend);
        
      }
      
      //剩余部分文件寫入到最后一份(如果不能平平均分配的時候)
      if (length - offset > 0) {
        //寫入文件
        getWrite(file, count-1, offset, length);
      }
      
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    
  }

2,getWrite文件寫入代碼 

/**
   * 指定文件每一份的邊界,寫入不同文件中
   * @param file 源文件
   * @param index 源文件的順序標識
   * @param begin開始指針的位置
   * @param end 結束指針的位置
   * @return long
   */
  public static long getWrite(String file,int index,long begin,long end){
    
    long endPointer = 0L;
    try {
      //申明文件切割后的文件磁盤
      RandomAccessFile in = new RandomAccessFile(new File(file), "r");
      //定義一個可讀,可寫的文件并且后綴名為.tmp的二進制文件
      RandomAccessFile out = new RandomAccessFile(new File(file + "_" + index + ".tmp"), "rw");
      
      //申明具體每一文件的字節(jié)數(shù)組
      byte[] b = new byte[1024];
      int n = 0;
      //從指定位置讀取文件字節(jié)流
      in.seek(begin);
      //判斷文件流讀取的邊界
      while(in.getFilePointer() <= end && (n = in.read(b)) != -1){
        //從指定每一份文件的范圍,寫入不同的文件
        out.write(b, 0, n);
      }
      
      //定義當前讀取文件的指針
      endPointer = in.getFilePointer();
      
      //關閉輸入流
      in.close();
      //關閉輸出流
      out.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
    
    return endPointer;
  }

3.文件合并代碼 

/**
   * 文件合并
   * @param file 指定合并文件
   * @param tempFile 分割前的文件名
   * @param tempCount 文件個數(shù)
   */
  public static void merge(String file,String tempFile,int tempCount){
    RandomAccessFile raf = null;
    try {
      //申明隨機讀取文件RandomAccessFile
      raf = new RandomAccessFile(new File(file), "rw");
      //開始合并文件,對應切片的二進制文件
      for (int i = 0; i < tempCount; i++) {
        //讀取切片文件
        RandomAccessFile reader = new RandomAccessFile(new File(tempFile + "_" + i + ".tmp"), "r");
        byte[] b = new byte[1024];
        int n = 0;
        while((n = reader.read(b)) != -1){
          raf.write(b, 0, n);//一邊讀,一邊寫
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }finally{
      try {
        raf.close();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }

最后在主程序里面調用就可以了

public static void main(String[] args) {
    
    String file = "F:\\java-study\\img\\mv.jpg";
    int count = 5;
    
    //1.根據現(xiàn)有的文件編寫文件編寫文件切片工具類
    //2.寫入到二進制臨時文件
    //  getSplitFile(file, count);
    //3.根據實際的需求合并指定數(shù)量的文件
    String tempFile = "F:\\java-study\\img\\img.jpg";
    merge(file, tempFile, 5);
 }

以上代碼可實現(xiàn)圖片,文檔,mp3,mp4等文件的拆分與合并,下面是圖片切片和拆分的效果圖

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • JAVA中StringBuffer與String的區(qū)別解析

    JAVA中StringBuffer與String的區(qū)別解析

    這篇文章主要介紹了JAVA中StringBuffer與String的區(qū)別解析,需要的朋友可以參考下
    2014-02-02
  • Java獲取本機IP地址的三種方法總結

    Java獲取本機IP地址的三種方法總結

    這篇文章主要為大家詳細介紹了java獲取本機IP地址的三種方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Java?Collection?接口和常用方法綜合詳解

    Java?Collection?接口和常用方法綜合詳解

    Collection派生出三個子接口,Set代表不可重復的無序集合、List代表可重復的有序集合、Queue是java提供的隊列實現(xiàn),通過它們不斷的擴展出很多的集合類,接下來我們詳細介紹一下
    2021-11-11
  • Java實現(xiàn)帶GUI的氣泡詩詞效果

    Java實現(xiàn)帶GUI的氣泡詩詞效果

    這篇文章主要為大家介紹了如何利用Java實現(xiàn)帶GUI的氣泡詩詞效果,文中的示例代碼講解詳細,對我們學習Java有一定幫助,感興趣的可以了解一下
    2022-12-12
  • SpringBoot獲取配置文件內容的幾種方式總結

    SpringBoot獲取配置文件內容的幾種方式總結

    大家都知道SpringBoot獲取配置文件的方法有很多,下面這篇文章主要給大家介紹了關于SpringBoot獲取配置文件內容的幾種方式,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • JavaWeb Session失效時間設置方法

    JavaWeb Session失效時間設置方法

    這篇文章主要介紹了JavaWeb Session失效時間設置方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-12-12
  • 淺談spring security入門

    淺談spring security入門

    這篇文章主要介紹了淺談spring security入門,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • SpringBoot返回多種格式的數(shù)據的實現(xiàn)示例

    SpringBoot返回多種格式的數(shù)據的實現(xiàn)示例

    本文主要介紹了SpringBoot返回多種格式的數(shù)據的實現(xiàn)示例,主要包括了FastJson,xml,pdf,excel,資源流,具有一定的參考價值,感興趣的可以了解一下
    2021-10-10
  • Java Web開發(fā)入門書籍實例解析(總結一)

    Java Web開發(fā)入門書籍實例解析(總結一)

    從事Java Web開發(fā)這一段時間來,對Java 面向對象的思想和MVC開發(fā)模式可以說已經熟悉了。我當前參與的項目使用的框架是Spring、SpringMVC、Hibernate。下面腳本之家小編給大家整理一篇教程幫助大家學習javaweb相關知識,感興趣的朋友可以參考下
    2016-03-03
  • Windows+Apache+resin配置

    Windows+Apache+resin配置

    Windows+Apache+resin配置...
    2006-12-12

最新評論

彝良县| 微山县| 乐安县| 西乡县| 景洪市| 南宁市| 东源县| 新化县| 铁岭县| 中卫市| 澄城县| 多伦县| 高邮市| 济源市| 广德县| 绍兴县| 宁海县| 安吉县| 广南县| 泽州县| 伽师县| 平南县| 南溪县| 鸡西市| 内丘县| 昭平县| 象州县| 天水市| 大竹县| 奉化市| 苏尼特右旗| 盱眙县| 南郑县| 思南县| 徐汇区| 花垣县| 西乌珠穆沁旗| 屏南县| 邯郸市| 诏安县| 贺州市|