文档章节

切割文件和合并文件

L
 LM_Mike
发布于 2017/07/23 23:47
字数 510
阅读 12
收藏 0

一、切割文件代码如下:

public class SplitFileTest {
    public static void main(String[] args) throws IOException {
        /**
         *  需求:将一个媒体文件切割成多个碎片(每个碎片的大小为1M),并添加配置说明文件
         *  1.创建(指定)一个文件夹,用于保存切割出来的碎片
         *  2.创建源文件对象,并传入一个输入流对象
         *  3.创建一个缓冲区为1M
         *  4.创建一个输入流对象并将源文件对象传入,创建一个输出流对象引用
         *  5.每个缓冲区获取到碎片时,使用输出对应流对象写入到一个新的文件
         *  6.写相应的信息到配置文件
         */
        File partDir = new File("F:\\partsDir");
        File src = new File("F:\\周杰伦 - 简单爱.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,"简单爱-part"+(count++)));
            fos.write(buf,0,len);
            fos.close();
        }

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

        fos = new FileOutputStream(new File(partDir,count+".properties"));
        //创建一个属性集。
        Properties prop = new Properties();
         //将配置信息存储到属性集中
        prop.setProperty("filename",src.getName());
        prop.setProperty("partCount",Integer.toString(partCount));

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

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

二、合并文件代码如下:

public class MergeFileTest {
    public static void main(String[] args) throws IOException {
        /**
         *  需求:使用SequenceInputStream类来合并碎片文件
         *  1.创建一个list集合,来保存指定文件夹碎片流集合
         *  2.用集合工具类方法Collections.enumeration()方法将list集合转换为Enumeration
         *  3.新建一个SequenceInputStream流对象,并传入第2步的Enumeration
         *  4.创建一个输出流对象,创建缓冲区循环写第3步SequenceInputStream读取的内容
         */

        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,"简单爱-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();
    }
}

© 著作权归作者所有

共有 人打赏支持
L
粉丝 1
博文 266
码字总数 40994
作品 0
深圳
私信 提问
Linux - 文件的分割(split)与合并(cat)

一、关于 在Linux下,切割和合并文件可以使用split和cat命令来实现。 二、文件切割 文件切割模式分为两种:文本文件和二进制模式。 1、文本模式 文本模式只适用于文本文件,用这种模式切割后...

leonardos
07/02
0
0
【Linux相关】linux大文件分割与合并

前言 近日由于网上下载了很多图片,然后花了很长一段时间进行压缩,压缩完成后一看,128G多,由于机器在远程,本来想通过百度网盘进行备份,后来提示最大单个文件只能4G大小,无奈只能手动切...

chenriwei2
2016/02/09
0
0
swift 小文件合并

swift 中针对大文件有切割,对小文件(1MB以内)没有优化处理。我想通过合并相关小文件,优化小文件存取。 但不知道 可行性方面是否合理。求助于大家!

幻泠影
2015/10/05
340
0
文件切割命令:split

如果你有的文件太大,导致一些携带式设备无法复制的问题,可使用“split”将大文件切割成小文件 语法: split [ -bl ] file PREFIX 参数说明: -b : 后面可接欲切割成的文件大小,可加单位,...

睿睿学IT
2016/10/18
0
0
Windows 2003 系统盘扩容,增加C盘空间

最近想搞一下Android的开,可无奈于之前系统盘只有30G,装完vs和slqserver后就所剩无几了。于是便有了扩充C盘空间的想法!之前使用PM,PQ等软件,都不能搞好,还报废了一块硬盘! 故发此文章...

laoqvan
2012/06/08
0
4

没有更多内容

加载失败,请刷新页面

加载更多

js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
17
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0
"errcode": 41001, "errmsg": "access_token missing hint: [w.ILza05728877!]"

Postman获取微信小程序码的时候报错, errcode: 41001, errmsg: access_token missing hint 查看小程序开发api指南,原来access_token是直接当作parameter的(写在url之后),scene参数一定要...

两广总督bogang
昨天
31
0
MYSQL索引

索引的作用 索引类似书籍目录,查找数据,先查找目录,定位页码 性能影响 索引能大大减少查询数据时需要扫描的数据量,提高查询速度, 避免排序和使用临时表 将随机I/O变顺序I/O 降低写速度,占用磁...

关元
昨天
14
0
撬动世界的支点——《引爆点》读书笔记2900字优秀范文

撬动世界的支点——《引爆点》读书笔记2900字优秀范文: 作者:挽弓如月。因为加入火种协会的读书活动,最近我连续阅读了两本论述流行的大作,格拉德威尔的《引爆点》和乔纳伯杰的《疯传》。...

原创小博客
昨天
35
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部