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://www.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>

        秀山| 柳林县| 崇信县| 衡阳县| 汪清县| 利川市| 广河县| 开江县| 乾安县| 苍南县| 通榆县| 浦东新区| 册亨县| 驻马店市| 西充县| 沙田区| 襄城县| 新乐市| 鹤庆县| 涡阳县| 乌兰县| 会昌县| 邢台市| 凤翔县| 咸宁市| 祥云县| 清徐县| 晋江市| 寻乌县| 卓资县| 察哈| 阳春市| 余庆县| 邮箱| 海阳市| 碌曲县| 清水河县| 枣强县| 石城县| 西林县| 通城县|