文档章节

切割文件和合并文件

L
 LM_Mike
发布于 2017/07/23 23:47
字数 510
阅读 10
收藏 0
点赞 0
评论 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
博文 246
码字总数 39812
作品 0
深圳
Linux - 文件的分割(split)与合并(cat)

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

leonardos ⋅ 2017/08/04 ⋅ 0

【Linux相关】linux大文件分割与合并

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

chenriwei2 ⋅ 2016/02/09 ⋅ 0

swift 小文件合并

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

幻泠影 ⋅ 2015/10/05 ⋅ 0

文件切割命令:split

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

睿睿学IT ⋅ 2016/10/18 ⋅ 0

百度云下载的压缩吧损坏问题解决

有时用百度云下载压缩包回来之后会出现损坏不能解压的问题,比如: 1、使用网页的批量下载,此时百度云会压缩成一个包,格式为zip,而下载下载回来之后用WinRAR解压就会出现CRC校验的错误,不...

easonjim ⋅ 2017/06/05 ⋅ 0

MKV媒体制作开源工具MKVToolnix

MKVToolnix是一款Matroska(MKV)格式制作与多媒体处理的开源软件, 支持的操作系统包括Linux以及Windows。支持将多种视频、音频、字幕等格式封装成mkv格式。软件遵守GPL开源协议。 功能特色...

marsdream ⋅ 06/14 ⋅ 0

Windows 2003 系统盘扩容,增加C盘空间

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

laoqvan ⋅ 2012/06/08 ⋅ 4

hadoop-mapreduce分析

把整个Hadoop看作是容器,那么Mapper和Reduce就是容器里的组件,*Context保存了组件的一些配置信息,同时也是和容器通信的机制。 参数 作用 缺省值 其它实现 InputFormat 将输入的数据集切割...

cookqq ⋅ 2014/01/05 ⋅ 0

文本处理及正则表达式

文本处理工具: more:分页查看文件 less:分页控制显示文件 head 查看文件的前几行 -n 3 显示前三行 -3 显示前三行 -c 指定显示的字节数 一个汉字占用三个字节 tail 查看显示文件的后几行 ...

淡然归心 ⋅ 2017/05/31 ⋅ 0

PDF文档切割和合并工具--pdfsam

pdfsam (PDF Split And Merge) 是一款可以为PDF文件进行合并和分割的软件,简称「pdfsam」。除了可进行合并与分割之外,还可以將一份PDF文件直接插入另一份PDF文件中间的页数,更可为PDF文件...

匿名 ⋅ 2009/08/28 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Gitee 生成并部署SSH key

1.如何生成ssh公钥 你可以按如下命令来生成 sshkey: ssh-keygen -t rsa -C "xxxxx@xxxxx.com" # Generating public/private rsa key pair...# 三次回车即可生成 ssh key 查看你的 ...

晨猫 ⋅ 48分钟前 ⋅ 0

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 今天 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

VS中使用X64汇编

需要注意的是,在X86项目中,可以使用__asm{}来嵌入汇编代码,但是在X64项目中,再也不能使用__asm{}来编写嵌入式汇编程序了,必须使用专门的.asm汇编文件来编写相应的汇编代码,然后在其它地...

simpower ⋅ 今天 ⋅ 0

ThreadPoolExecutor

ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ......

4rnold ⋅ 昨天 ⋅ 0

Java正无穷大、负无穷大以及NaN

问题来源:用Java代码写了一个计算公式,包含除法和对数和取反,在页面上出现了-infinity,不知道这是什么问题,网上找答案才明白意思是负的无穷大。 思考:为什么会出现这种情况呢?这是哪里...

young_chen ⋅ 昨天 ⋅ 0

前台对中文编码,后台解码

前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");

west_coast ⋅ 昨天 ⋅ 0

实验楼—MySQL基础课程-挑战3实验报告

按照文档要求创建数据库 sudo sercice mysql startwget http://labfile.oss.aliyuncs.com/courses/9/createdb2.sqlvim /home/shiyanlou/createdb2.sql#查看下数据库代码 代码创建了grade......

zhangjin7 ⋅ 昨天 ⋅ 0

一起读书《深入浅出nodejs》-node模块机制

node 模块机制 前言 说到node,就不免得提到JavaScript。JavaScript自诞生以来,经历了工具类库、组件库、前端框架、前端应用的变迁。通过无数开发人员的努力,JavaScript不断被类聚和抽象,...

小草先森 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部