1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      java如何合并多個文件

      小編這次要給大家分享的是java如何合并多個文件,文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

      網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了碧江免費建站歡迎大家使用!

      在java多個線程下載文件或處理較大文件是可能會切分成多個文件,處理完成后需要合并成一個文件。

      Java中合并子文件最容易想到的就是利用BufferedStream進行讀寫。

      利用BufferedStream合并多個文件

      public static boolean mergeFiles(String[] fpaths, String resultPath) {
        if (fpaths == null || fpaths.length < 1 || TextUtils.isEmpty(resultPath)) {
          return false;
        }
        if (fpaths.length == 1) {
          return new File(fpaths[0]).renameTo(new File(resultPath));
        }
       
        File[] files = new File[fpaths.length];
        for (int i = 0; i < fpaths.length; i ++) {
          files[i] = new File(fpaths[i]);
          if (TextUtils.isEmpty(fpaths[i]) || !files[i].exists() || !files[i].isFile()) {
            return false;
          }
        }
       
        File resultFile = new File(resultPath);
       
        try {
          int bufSize = 1024;
          BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(resultFile));
          byte[] buffer = new byte[bufSize];
       
          for (int i = 0; i < fpaths.length; i ++) {
            BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream(files[i]));
            int readcount;
            while ((readcount = inputStream.read(buffer)) > 0) {
              outputStream.write(buffer, 0, readcount);
            }
            inputStream.close();
          }
          outputStream.close();
        } catch (FileNotFoundException e) {
          e.printStackTrace();
          return false;
        } catch (IOException e) {
          e.printStackTrace();
          return false;
        }
       
        for (int i = 0; i < fpaths.length; i ++) {
          files[i].delete();
        }
       
        return true;
      }

      利用nio FileChannel合并多個文件

      BufferedStream的合并操作是一個循環(huán)讀取子文件內(nèi)容然后復(fù)制寫入最終文件的過程,此過程會從文件系統(tǒng)中讀取數(shù)據(jù)到內(nèi)存中,之后再寫入文件系統(tǒng),比較低效。

      一種更高效的合并方式是利用Java nio庫中FileChannel類的transferTo方法進行合并。此方法可以利用很多操作系統(tǒng)直接從文件緩存?zhèn)鬏斪止?jié)的能力來優(yōu)化傳輸速度。

      實現(xiàn)方法:

      public static boolean mergeFiles(String[] fpaths, String resultPath) {
        if (fpaths == null || fpaths.length < 1 || TextUtils.isEmpty(resultPath)) {
          return false;
        }
        if (fpaths.length == 1) {
          return new File(fpaths[0]).renameTo(new File(resultPath));
        }
       
        File[] files = new File[fpaths.length];
        for (int i = 0; i < fpaths.length; i ++) {
          files[i] = new File(fpaths[i]);
          if (TextUtils.isEmpty(fpaths[i]) || !files[i].exists() || !files[i].isFile()) {
            return false;
          }
        }
       
        File resultFile = new File(resultPath);
       
        try {
          FileChannel resultFileChannel = new FileOutputStream(resultFile, true).getChannel();
          for (int i = 0; i < fpaths.length; i ++) {
            FileChannel blk = new FileInputStream(files[i]).getChannel();
            resultFileChannel.transferFrom(blk, resultFileChannel.size(), blk.size());
            blk.close();
          }
          resultFileChannel.close();
        } catch (FileNotFoundException e) {
          e.printStackTrace();
          return false;
        } catch (IOException e) {
          e.printStackTrace();
          return false;
        }
       
        for (int i = 0; i < fpaths.length; i ++) {
          files[i].delete();
        }
       
        return true;
      }

      看完這篇關(guān)于java如何合并多個文件的文章,如果覺得文章內(nèi)容寫得不錯的話,可以把它分享出去給更多人看到。


      當(dāng)前名稱:java如何合并多個文件
      URL分享:http://ef60e0e.cn/article/popoeo.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        黄大仙区| 麻江县| 西乌珠穆沁旗| 包头市| 泾川县| 西乌珠穆沁旗| 石楼县| 白城市| 三河市| 阿拉善盟| 南漳县| 美姑县| 江门市| 唐海县| 汾阳市| 永嘉县| 深水埗区| 高邮市| 南漳县| 大足县| 新民市| 阜新| 将乐县| 双流县| 瓮安县| 太仆寺旗| 思南县| 大连市| 法库县| 尉氏县| 杨浦区| 吴旗县| 崇阳县| 伊金霍洛旗| 丹巴县| 临安市| 巴彦淖尔市| 潜山县| 竹北市| 大方县| 遂宁市|