欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java 使用IO流實現(xiàn)大文件的分割與合并實例詳解

 更新時間:2016年12月24日 14:48:19   投稿:lqh  
這篇文章主要介紹了Java 使用IO流實現(xiàn)大文件的分割與合并實例詳解的相關(guān)資料,需要的朋友可以參考下

Java 使用IO流實現(xiàn)大文件的分割與合并

文件分割應(yīng)該算一個比較實用的功能,舉例子說明吧比如說:你有一個3G的文件要從一臺電腦Copy到另一臺電腦, 但是你的存儲設(shè)備(比如SD卡)只有1G ,這個時候就可以把這個文件切割成3個1G的文件 ,分開復(fù)制, 最后把三個文件合并, 這樣就解決問題了 ;再比如說, 你有一個上百M的文件要上傳到FTP ,但是這個FTP限制你單個文件不能超過10M 這時候也可以用文件分割的辦法解決問題。既然分割了,那么在我們再次使用的時候就需要合并了,今天我們就通過Java代碼實現(xiàn)文件分裂與合并的能。

現(xiàn)在通過演示我本機的一個文件來演示,文件目錄為:E:\eclipse-jee-juno-win32.zip(今天就把大家痛恨的eclipse好好玩一下):

下圖為分割前的情況:

分割后的情況為:

Java分割文件的方法:

//文件分割的方法(方法內(nèi)傳入要分割的文件路徑以及要分割的份數(shù))
private static void splitFileDemo(File src, int m) {
 if(src.isFile()) {
  //獲取文件的總長度
  long l = src.length();
  //獲取文件名
  String fileName = src.getName().substring(0, src.getName().indexOf("."));
  //獲取文件后綴
  String endName = src.getName().substring(src.getName().lastIndexOf("."));
  System.out.println(endName);
  InputStream in = null;
  try {
   in = new FileInputStream(src);
   for(int i = 1; i <= m; i++) {
    StringBuffer sb = new StringBuffer();
    sb.append(src.getParent()).append("\\").append(fileName)
    .append("_data").append(i).append(endName);
    System.out.println(sb.toString());
    File file2 = new File(sb.toString());
    //創(chuàng)建寫文件的輸出流
    OutputStream out = new FileOutputStream(file2);
    int len = -1;
    byte[] bytes = new byte[10*1024*1024];
    while((len = in.read(bytes))!=-1) {
     out.write(bytes, 0, len);
     if(file2.length() > (l / m)) {
      break;
     }
    }
    out.close();
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
  finally {
   try {
    in.close();
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
 }
}

Java合并文件的方法:

//文件合并的方法(傳入要合并的文件路徑)
private static void joinFileDemo(String... src) {
 for(int i = 0; i < src.length; i++) {
  File file = new File(src[i]);
  String fileName = file.getName().substring(0, file.getName().indexOf("_"));
  String endName = file.getName().substring(file.getName().lastIndexOf("."));
  StringBuffer sb = new StringBuffer();
  sb.append(file.getParent()).append("\\").append(fileName)
  .append(endName);
  System.out.println(sb.toString());
  try {
   //讀取小文件的輸入流
   InputStream in = new FileInputStream(file);
   //寫入大文件的輸出流
   File file2 = new File(sb.toString());
   OutputStream out = new FileOutputStream(file2,true);
   int len = -1;
   byte[] bytes = new byte[10*1024*1024];
   while((len = in.read(bytes))!=-1) {
    out.write(bytes, 0, len);
   }
   out.close();
   in.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 System.out.println("文件合并完成!");
}

寫之前覺得挺復(fù)雜,寫完之后覺得也就那樣,大家也可以練練手。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • mybatis中使用InsertProvider注解報錯解決全過程

    mybatis中使用InsertProvider注解報錯解決全過程

    這篇文章主要介紹了mybatis中使用InsertProvider注解報錯解決全過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • SpringBoot過濾器與攔截器深入分析實現(xiàn)方法

    SpringBoot過濾器與攔截器深入分析實現(xiàn)方法

    大家應(yīng)該都曉得實現(xiàn)過濾器需要實現(xiàn) javax.servlet.Filter 接口,而攔截器會在處理指定請求之前和之后進(jìn)行相關(guān)操作,配置攔截器需要兩步,本文通過實例代碼給大家介紹SpringBoot 過濾器和攔截器的相關(guān)知識,感興趣的朋友一起看看吧
    2022-11-11
  • 解決springboot configuration processor對maven子模塊不起作用的問題

    解決springboot configuration processor對maven子模塊不起作用的問題

    這篇文章主要介紹了解決springboot configuration processor對maven子模塊不起作用的問題,本文通過圖文實例代碼給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • Win10?IDEA如何連接虛擬機中的Hadoop(HDFS)

    Win10?IDEA如何連接虛擬機中的Hadoop(HDFS)

    在虛擬機上配置Hadoop并修改core-site.xml文件,設(shè)置IP為局域網(wǎng)地址,IDEA中創(chuàng)建Maven項目,添加依賴,并檢查Hadoop重啟和端口轉(zhuǎn)發(fā),提供test.bat文件,通過修改IP簡化使用過程
    2024-11-11
  • vue 使用vuex在頁面跳轉(zhuǎn)的實現(xiàn)方式

    vue 使用vuex在頁面跳轉(zhuǎn)的實現(xiàn)方式

    這篇文章主要介紹了vue 使用vuex在頁面跳轉(zhuǎn)的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringBoot中的自定義Banner詳細(xì)解析

    SpringBoot中的自定義Banner詳細(xì)解析

    這篇文章主要介紹了SpringBoot中的自定義Banner詳細(xì)解析,Banner即橫幅標(biāo)語,我們在啟動SpringBoot項目時會將Banner信息打印至控制臺,我們可以輸出一些圖形、SpringBoot版本信息等內(nèi)容,需要的朋友可以參考下
    2024-01-01
  • 理解 MyBatis 是如何在 Spring 容器中初始化的

    理解 MyBatis 是如何在 Spring 容器中初始化的

    這篇文章主要介紹了理解 MyBatis 是如何在 Spring 容器中初始化的,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Go Java算法之K個重復(fù)字符最長子串詳解

    Go Java算法之K個重復(fù)字符最長子串詳解

    這篇文章主要為大家介紹了Go Java算法之K個重復(fù)字符最長子串詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • IDEA2023常用配置指南(JDK/系統(tǒng)設(shè)置等常用配置)

    IDEA2023常用配置指南(JDK/系統(tǒng)設(shè)置等常用配置)

    idea很強大,但是初次安裝默認(rèn)的有很多設(shè)置并不是滿足我們開發(fā)的需要,下面這篇文章主要給大家介紹了關(guān)于IDEA2023常用配置(JDK/系統(tǒng)設(shè)置等常用配置)的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • SpringBoot集成Activiti7工作流引擎的示例代碼

    SpringBoot集成Activiti7工作流引擎的示例代碼

    本文主要介紹了SpringBoot集成Activiti7工作流引擎的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11

最新評論