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

java 實(shí)現(xiàn)切割文件和合并文件的功能

 更新時(shí)間:2017年07月24日 11:08:40   作者:LM加強(qiáng)  
這篇文章主要介紹了java 實(shí)現(xiàn)切割文件和合并文件的功能的相關(guān)資料,這里實(shí)現(xiàn)文件的切割的實(shí)現(xiàn)代碼和文件合并的實(shí)現(xiàn)代碼,需要的朋友可以參考下

java 實(shí)現(xiàn)切割文件和合并文件的功能

一、切割文件代碼如下:

需求:將一個(gè)媒體文件切割成多個(gè)碎片(每個(gè)碎片的大小為1M),并添加配置說(shuō)明文件

          1.創(chuàng)建(指定)一個(gè)文件夾,用于保存切割出來(lái)的碎片
          2.創(chuàng)建源文件對(duì)象,并傳入一個(gè)輸入流對(duì)象
          3.創(chuàng)建一個(gè)緩沖區(qū)為1M
          4.創(chuàng)建一個(gè)輸入流對(duì)象并將源文件對(duì)象傳入,創(chuàng)建一個(gè)輸出流對(duì)象引用
          5.每個(gè)緩沖區(qū)獲取到碎片時(shí),使用輸出對(duì)應(yīng)流對(duì)象寫入到一個(gè)新的文件
          6.寫相應(yīng)的信息到配置文件

實(shí)現(xiàn)代碼:

public class SplitFileTest {
  public static void main(String[] args) throws IOException {
    /**
     * 需求:將一個(gè)媒體文件切割成多個(gè)碎片(每個(gè)碎片的大小為1M),并添加配置說(shuō)明文件
     * 1.創(chuàng)建(指定)一個(gè)文件夾,用于保存切割出來(lái)的碎片
     * 2.創(chuàng)建源文件對(duì)象,并傳入一個(gè)輸入流對(duì)象
     * 3.創(chuàng)建一個(gè)緩沖區(qū)為1M
     * 4.創(chuàng)建一個(gè)輸入流對(duì)象并將源文件對(duì)象傳入,創(chuàng)建一個(gè)輸出流對(duì)象引用
     * 5.每個(gè)緩沖區(qū)獲取到碎片時(shí),使用輸出對(duì)應(yīng)流對(duì)象寫入到一個(gè)新的文件
     * 6.寫相應(yīng)的信息到配置文件
     */
    File partDir = new File("F:\\partsDir");
    File src = new File("F:\\周杰倫 - 簡(jiǎn)單愛.mp3");
    splitFile(src,partDir);

  }

  private static void splitFile(File src, File partDir) throws IOException {
    if(!partDir.exists()){
      partDir.mkdirs();
    }
    byte[] buf = new byte[1024*1024];
    FileInputStream fis = new FileInputStream(src);
    FileOutputStream fos = null;
    int len = 0;
    int count = 1;
    while ((len=fis.read(buf)) != -1){
      fos = new FileOutputStream(new File(partDir,"簡(jiǎn)單愛-part"+(count++)));
      fos.write(buf,0,len);
      fos.close();
    }

    String filename = src.getName();
    int partCount = count;

    fos = new FileOutputStream(new File(partDir,count+".properties"));
    //創(chuàng)建一個(gè)屬性集。
    Properties prop = new Properties();
     //將配置信息存儲(chǔ)到屬性集中
    prop.setProperty("filename",src.getName());
    prop.setProperty("partCount",Integer.toString(partCount));

    //將屬性集中的信息持久化
    prop.store(fos,"part file info");

    fos.close();
    fis.close();
  }
}

二、合并文件代碼如下:

需求:使用SequenceInputStream類來(lái)合并碎片文件

           1.創(chuàng)建一個(gè)list集合,來(lái)保存指定文件夾碎片流集合
           2.用集合工具類方法Collections.enumeration()方法將list集合轉(zhuǎn)換為Enumeration
           3.新建一個(gè)SequenceInputStream流對(duì)象,并傳入第2步的Enumeration
           4.創(chuàng)建一個(gè)輸出流對(duì)象,創(chuàng)建緩沖區(qū)循環(huán)寫第3步SequenceInputStream讀取的內(nèi)容

public class MergeFileTest {
  public static void main(String[] args) throws IOException {
    /**
     * 需求:使用SequenceInputStream類來(lái)合并碎片文件
     * 1.創(chuàng)建一個(gè)list集合,來(lái)保存指定文件夾碎片流集合
     * 2.用集合工具類方法Collections.enumeration()方法將list集合轉(zhuǎn)換為Enumeration
     * 3.新建一個(gè)SequenceInputStream流對(duì)象,并傳入第2步的Enumeration
     * 4.創(chuàng)建一個(gè)輸出流對(duì)象,創(chuàng)建緩沖區(qū)循環(huán)寫第3步SequenceInputStream讀取的內(nèi)容
     */

    File partDir = new File("F:\\partsDir");
    List<FileInputStream> list = new ArrayList<FileInputStream>();
    for (int i=1;i<12;i++){
      FileInputStream fis = new FileInputStream(new File(partDir,"簡(jiǎn)單愛-part"+i));
      list.add(fis);
    }
    Enumeration<FileInputStream> en = Collections.enumeration(list);
    SequenceInputStream sis = new SequenceInputStream(en);

    FileOutputStream fos = new FileOutputStream(new File(partDir,"000.mp3"));

    byte[] buf = new byte[1024];
    int len = 0;
    while ((len=sis.read(buf)) != -1){
      fos.write(buf,0,len);
    }

    fos.close();
    sis.close();
  }
}


以上就是關(guān)于java 文件切割和合并的實(shí)例詳解,大家如果有疑問(wèn)可以留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • java實(shí)現(xiàn)監(jiān)聽u盤示例分享

    java實(shí)現(xiàn)監(jiān)聽u盤示例分享

    這篇文章主要介紹了java實(shí)現(xiàn)監(jiān)聽u盤示例,需要的朋友可以參考下
    2014-03-03
  • springBoot 與neo4j的簡(jiǎn)單整合示例

    springBoot 與neo4j的簡(jiǎn)單整合示例

    這篇文章主要介紹了springBoot 與neo4j的簡(jiǎn)單整合示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • nacos服務(wù)注冊(cè)服務(wù)發(fā)現(xiàn)依賴配置詳解

    nacos服務(wù)注冊(cè)服務(wù)發(fā)現(xiàn)依賴配置詳解

    這篇文章主要為大家介紹了nacos服務(wù)注冊(cè)服務(wù)發(fā)現(xiàn)依賴配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Java實(shí)現(xiàn)抽獎(jiǎng)算法的示例代碼

    Java實(shí)現(xiàn)抽獎(jiǎng)算法的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用Java語(yǔ)言實(shí)現(xiàn)抽獎(jiǎng)算法,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定幫助,需要的可以參考一下
    2022-04-04
  • Spring中基于XML的面向切面編程(AOP)詳解

    Spring中基于XML的面向切面編程(AOP)詳解

    這篇文章主要詳細(xì)介紹了Spring中基于XML的面向切面編程(AOP),文中通過(guò)代碼示例給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-04-04
  • Spring項(xiàng)目中使用Junit單元測(cè)試并配置數(shù)據(jù)源的操作

    Spring項(xiàng)目中使用Junit單元測(cè)試并配置數(shù)據(jù)源的操作

    這篇文章主要介紹了Spring項(xiàng)目中使用Junit單元測(cè)試并配置數(shù)據(jù)源的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 深入了解java內(nèi)存分配和回收策略

    深入了解java內(nèi)存分配和回收策略

    下面小編就為大家?guī)?lái)一篇深入了解java內(nèi)存分配和回收策略。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • springboot自動(dòng)裝配的源碼與流程圖

    springboot自動(dòng)裝配的源碼與流程圖

    在日常的開發(fā)過(guò)程中Spring Boot自動(dòng)裝配的特性給我們開發(fā)減少了很多重復(fù)性的工作,這篇文章主要給大家介紹了關(guān)于springboot自動(dòng)裝配的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • Java hashCode() 方法詳細(xì)解讀

    Java hashCode() 方法詳細(xì)解讀

    Java.lang.Object 有一個(gè)hashCode()和一個(gè)equals()方法,這兩個(gè)方法在軟件設(shè)計(jì)中扮演著舉足輕重的角色,本文對(duì)hashCode()方法深入理解,希望能幫助大家
    2016-07-07
  • mybatisPlus中apply的使用以進(jìn)行聯(lián)表等復(fù)雜sql語(yǔ)句詳解

    mybatisPlus中apply的使用以進(jìn)行聯(lián)表等復(fù)雜sql語(yǔ)句詳解

    在MyBatis-Plus中,`apply()`方法可以用于添加任意的SQL片段,包括聯(lián)表查詢,使用`apply()`方法的好處是可以直接添加原生的SQL片段,而不受MyBatis-Plus提供的常規(guī)查詢條件構(gòu)建方法的限制,但是,使用`apply()`方法需要注意安全性和性能問(wèn)題
    2025-03-03

最新評(píng)論

鹿邑县| 博白县| 嫩江县| 山东| 自贡市| 涟源市| 河源市| 武鸣县| 光山县| 祁连县| 马龙县| 惠来县| 青浦区| 乌拉特中旗| 台北县| 通山县| 如皋市| 中宁县| 隆回县| 太谷县| 彰化县| 石屏县| 克山县| 潼南县| 饶阳县| 宝丰县| 井陉县| 南丹县| 黄骅市| 招远市| 灵台县| 南皮县| 平顺县| 开封县| 中山市| 顺昌县| 清镇市| 页游| 襄垣县| 玉门市| 察隅县|