java 实现切割文件和合并文件的功能

一、切割文件代码如下:

需求:将一个媒体文件切割成多个碎片(每个碎片的大小为1M),并添加配置说明文件

1.创建(指定)一个文件夹,用于保存切割出来的碎片

2.创建源文件对象,并传入一个输入流对象

3.创建一个缓冲区为1M

4.创建一个输入流对象并将源文件对象传入,创建一个输出流对象引用

5.每个缓冲区获取到碎片时,使用输出对应流对象写入到一个新的文件

6.写相应的信息到配置文件

实现代码:

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();

}

}

二、合并文件代码如下:

需求:使用SequenceInputStream类来合并碎片文件

1.创建一个list集合,来保存指定文件夹碎片流集合

2.用集合工具类方法Collections.enumeration()方法将list集合转换为Enumeration

3.新建一个SequenceInputStream流对象,并传入第2步的Enumeration

4.创建一个输出流对象,创建缓冲区循环写第3步SequenceInputStream读取的内容

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 list = new ArrayList();

for (int i=1;i<12;i++){

FileInputStream fis = new FileInputStream(new File(partDir,"简单爱-part"+i));

list.add(fis);

}

Enumeration 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();

}

}

以上就是关于java 文件切割和合并的实例详解,大家如果有疑问可以留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

java 快速合并文件_java 实现切割文件和合并文件的功能相关推荐

  1. java工具类之大文件分片(切割)与合并

    之前在潭州教育教学网站上看了一个视频关于java大文件的分片与合并 自己在练习的时候遇到一些坑,调试了好长时间 代码如下: 首先配置一个专门放参数的类 SplitFileParam public cl ...

  2. java 双声道音频_java实现切割wav音频文件的方法详解【附外部jar包下载】

    本文实例讲述了java实现切割wav音频文件的方法.分享给大家供大家参考,具体如下: import it.sauronsoftware.jave.Encoder; import it.sauronso ...

  3. java读取系统中指定的文件_java读取jar中指定的文件

    Java 档案 (Java Archive, JAR) 文件是基于 Java 技术的打包方案.它们允许开发人员把所有相关的内容 (.class.图片.声音和支持文件等) 打包到一个单一的文件中.JAR ...

  4. java解压两层zip文件_Java解压缩zip - 解压缩多个文件或文件夹实例

    java解压缩zip - 多个文件(包括文件夹),具体如下: 对多个文件和文件夹进行压缩,对复杂的文件目录进行解压. 压缩方法使用的是可变参数,可以压缩1到多个文件..可以写数组的方式或者一个个写到参 ...

  5. java编译找不到文件_java报错找不到文件解决方法

    刚开始编写java代码时,肯定会遇到各种各样的bug,当然对于初学者这也是能理解的,首先来说一个比较常见的错误,如下: 一般编写新的程序时,都是从Hello,World开始的,比如在DOS上运行jav ...

  6. java io流读取txt文件_Java使用IO流读取TXT文件

    通过BufferedReader读取TXT文件 window系统默认的编码是GBK,而IDE的编码多数为UTF-8,如果没有规定new InputStreamReader(new FileInputS ...

  7. java ftp上传文件_jaVA使用FTP上传下载文件的问题

    为了实现 FTP上传下载,大概试了两个方法 sun.net.ftp.FtpClient org.apache.commons.net 一开始使用sun.net.ftp.FtpClient,结果发现唯一 ...

  8. .gitignore文件_Java小白入门,Git忽略文件.gitignore详解

    在工程中,并不是所有文件都需要保存到版本库中的,例如"target"目录及目录下的文件就可以忽略.在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件 ...

  9. java 输入流可以合并吗_Java 使用IO流实现大文件的分割与合并实例详解

    java 使用IO流实现大文件的分割与合并 文件分割应该算一个比较实用的功能,举例子说明吧比如说:你有一个3G的文件要从一台电脑Copy到另一台电脑, 但是你的存储设备(比如SD卡)只有1G ,这个时 ...

最新文章

  1. python读取大数据量xml_[C#]_[使用微软OpenXmlSDK (OpenXmlReader)读取xlsx表格] 读取大数据量100万条数据Excel文件解决方案...
  2. 高性能负载均衡设计入门篇
  3. dede调用当前顶级栏目名称、ID、url方法
  4. nginx 上传 文件超时设置_nginx限制上传大小和超时时间设置说明/php限制上传大小...
  5. C#: Writing a CookieContainer to Disk and Loading Back In For Use
  6. VS2005不能新建Win32 智能设备项目的解决办法(转)
  7. [转]常见的软件版本编号及命名
  8. C# 引用访问权限,很多老手都不懂
  9. 40个幼儿园小故事,每天讲一个给小朋友~(赶紧收藏)
  10. php html转ubb,PHP HTML转UBB函数
  11. linux tar.7z如何解压,(转)Linux下解压:tar、rar、7z命令
  12. 该如何选择适合的服务器
  13. R语言散点图+趋势线+标注
  14. (六)springMvc 和 mybatis 整合
  15. 国密算法 SM4 对称加密 分组密码 python实现完整代码
  16. 全栈AI火力全开,“云智一体”为开发者凿开产业智能通衢
  17. Python爬虫系列(2)
  18. 视频流媒体服务器如何用OBS推流录屏或直播?
  19. bugly android studio,android studio 中怎么添加 bugly
  20. DUCATI XDIAVEL:杜卡迪最值得买的车:魔鬼诱惑 —— XDiavel S 评测

热门文章

  1. java mediacoder_MediaCoder转移动设备MP4(高清)
  2. QSettings配置读写-win注册表操作-ini文件读写
  3. FPGA实现IRIG-B(DC)码编码和解码的设计
  4. 鸿蒙版瑞幸咖啡开发日记(一)首页布局设计
  5. 啃完这些 Spring 知识点,我竟吊打了阿里面试官(附面经 + 笔记)
  6. (Docker)Centos docker配置neo4j和mysql
  7. 大型机学习之初步了解-什么是大型机
  8. 现在你们叫我大佬,其实我在大学就是渣渣
  9. 如何将DWG(CAD格式文件)转换到shp或其它gis文件
  10. Fastboot线刷“复活”之刷机心得(二)——线刷刷机