一、实现文件切割功能

01. import java.io.File;
02. import java.io.FileInputStream;
03. import java.io.FileOutputStream;
04. import java.io.IOException;
05. import java.util.Properties;
06.
07. public class SplitFileDemo{
08.
09. private static final int SIZE = 1024*1024;
10.
11. public static void main(String[] args) throws IOException{
12. File file = new File("0.mp3" );
13. splitFile(file);
14. }
15.
16. public static void splitFile(File file) throws IOException {
17. //用读取流关联源文件
18. FileInputStream fis = new FileInputStream(file);
19.
20. //定义一个1M的缓冲区
21. byte[] buf = new byte[SIZE];
22.
23. //创建目的
24. FileOutputStream fos = null;
25.
26. int len = 0;
27. int count = 1;
28.
29. //切割文件时,必须记录住被切割文件的名称,以及切割出来碎片文件的个数,以方
便于合并。
30. //这个信息为了进行描述,使用键值对的方式,用到了properties对象。
31.
32. Properties prop = new Properties();
33.
34. File dir = new File("c:\\partFiles" );
35. if(!dir.exists())
36. dir.mkdirs();
37.
38. while((len = fis.read(buf)) != -1){
39. fos = new FileOutputStream(new File(dir,(count++) +
".part"));
40. fos.write(buf,0,len);
41. fos.close();
42. }
43.
44. //将被切割文件的信息保存到prop集合中
45. prop.setProperty( "partcount",count + "" );
46. prop.setProperty( "filename",file.getName());
47.
48. fos = new FileOutputStream(new File(dir,count + ".properties" ));
49.
50. //将prop集合中的数据存储到文件中
51. prop.store(fos, "save file info");
52.
53. fis.close();
54. fos.close();
55. }
56. }

二 、实现文件合并功能

01. import java.io.File;
02. import java.io.FileInputStream;
03. import java.io.FileOutputStream;
04. import java.io.FilenameFilter;
05. import java.io.IOException;
06. import java.io.SequenceInputStream;
07. import java.util.ArrayList;
08. import java.util.Collections;
09. import java.util.Enumeration;
10. import java.util.Iterator;
11. import java.util.Properties;
12.
13. public class MergeFile{
14. public static void main(String[] args) throws IOException {
15. File dir = new File("c:\\partFiles" );
16. mergeFile(dir);
17. }
18.
19. public static void mergeFile(File dir) throws IOException {
20.
21. //获取指定目录下的配置文件对象
22. File[] files = dir.listFiles( new SuffixFilter(".properties" ));
23.
24. if(files.length!=1)
25. throw new RuntimeException(dir + ",该目录下没有properties扩
展名的文件或者不唯一" );
26.
27. //记录配置文件对象
28. File confile = files[0];
29.
30. //获取该文件中的信息
31. Properties prop = new Properties();
32. FileInputStream fis = new FileInputStream(confile);
33.
34. prop.load(fis);
35.
36. String filename = prop.getProperty( "filename");
37.
38. int count = Integer.parseInt(prop.getProperty("partcount"));
39.
40. //获取该目录下的所有碎片文件
41. File[] partFiles = dir.listFiles( new SuffixFilter(".part" ));
42.
43. if(partFiles.length != (count - 1)){
44. throw new RuntimeException("碎片文件不符合要求,个数不对!应该
是" + count + "个");
45. }
46.
47. //将碎片文件和流对象关联并存储到集合中
48. ArrayList<FileInputStream> al = new ArrayList<FileInputStream>();
49.
50. for(int x = 1; x <= partFiles.length; x++){
51. al.add( new FileInputStream(partFiles[x-1]));
52. }
53.
54. final Iterator<FileInputStream> it = al.iterator();
55.
56. //将多个流合并成一个序列流
57. Enumeration<FileInputStream> en = Collections.enumeration(al);
58.
59. SequenceInputStream sis = new SequenceInputStream(en);
60.
61. FileOutputStream fos = new FileOutputStream(new
File(dir,filename));
62.
63. byte[] buf = new byte[1024*1024];
64.
65. int len = 0;
66.
67. while((len = sis.read(buf)) != -1){
68. fos.write(buf,0,len);
69. }
70.
71. fos.close();
72. sis.close();
73. }
74. }
75.
76. class SuffixFilter implements FilenameFilter{
77. private String suffix;
78.
79. public SuffixFilter(String suffix){
80. super();
81. this.suffix = suffix;
82. }
83.
84. public boolean accept(File dir,String name){
85. return name.endsWith(suffix);
86. }
87. }

Java实现的文件切割器和文件合并器代码相关推荐

  1. 文件切割器和文件合并器

    一.文件切割器 import java.io.File;  import java.io.FileInputStream;  import java.io.FileOutputStream;  imp ...

  2. wemall app商城源码中基于JAVA的Android异步加载图片管理器代码

    wemall doraemon是Android客户端程序,服务端采用wemall微信商城,不对原商城做任何修改,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可随意定制修改.本文分享其中 ...

  3. Java基础--文件切割器

    好吧,既然算法这个高深的问题还不能游刃有余,那就先巩固巩固基础吧! 我就根据自己的学习经历,来复习一下以前学过的知识吧! 首先声明,这些概念非本人创造,是本人学习过程中接触到的.然后我根据自己的理解空 ...

  4. Java实现文件分割和文件合并实例

    文件切割和文件合并这个问题困扰了我有一段时间了(超过一天没做粗来). 找了好多博客,本来想转载一个来的 结果找不到了.很无奈. 只好自己贴代码上了. 当然我会尽力好好写注释的. 文件切割器: impo ...

  5. java实现文件合并_Java实现文件分割和文件合并实例

    文件切割和文件合并这个问题困扰了我有一段时间了(超过一天没做粗来). 找了好多博客,本来想转载一个来的 结果找不到了.很无奈. 只好自己贴代码上了. 当然我会尽力好好写注释的. 文件切割器: impo ...

  6. java实现对大文件切割下载_Java实现大文件的切割与合并操作示例

    Java实现大文件的切割与合并操作示例 发布时间:2020-09-27 02:25:08 来源:脚本之家 阅读:99 作者:HiBoyljw 本文实例讲述了Java实现大文件的切割与合并操作.分享给大 ...

  7. java基础—文件的切割与合并

    文件的切割与合并 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.Fil ...

  8. JAVA写的文件分割与文件合并程序

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 原来觉得 ...

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

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

最新文章

  1. tlb存的什么_什么是MMU,TLB
  2. 不只是让利百亿,天猫618揭示了哪些新零售趋势?
  3. 四因素三水平正交试验表_案例 | 螺栓装配失效试验研究
  4. usb大容量存储设备驱动_Win10默认已禁用USB驱动器缓存 1903版本起无需点击安全弹出...
  5. Linux内核:容器底层cgroup如何使用
  6. python定义字体颜色_windows print 自定义字体颜色【python】
  7. Quartz调度源码分析
  8. 【设计模式】—— 备忘录模式Memento
  9. 为什么老海员都不舍得下船?
  10. CACTI 仙人掌监控平台
  11. NET Core-学习笔记(二)
  12. Java程序员的工资标准是多少
  13. DZ60通过IIC读取LM75温度遇到问题解决方法
  14. 闲聊一下android 3D 网络游戏
  15. git fatal: The remote end hung up unexpectedly 错误
  16. 【光照感知子场:差分感知融合模块与中间融合策略相结合】
  17. 安东尼:为来欧洲踢球做出了牺牲,穿上曼联球衣让我很满足
  18. HTML设置悬停效果,如何使用纯CSS实现按钮的悬停效果
  19. 计算机域名长啥样,域名是什么 什么样的域名是一个好域名【详解】
  20. NAT ALG DNS — DNS在内部,外网通过域名访问内部服务器

热门文章

  1. Substance Designer个人学习笔记
  2. [音乐]叶德娴《赤子》
  3. 中国房价2011上涨2012崩溃
  4. 最新互普威盾4.62 威盾4.5 4.33 互普威盾3.59 溢信IPGuard4.62 ip-guard4.5 IPguard4.33 IPGuard3.59 ip-guard4.51注册授权
  5. java计算机毕业设计汽车维修管理系统源码+程序+lw文档+mysql数据库
  6. 汽车维修APP开发源码现成
  7. 2017最新整理移动Web开发遇到的坑
  8. 为什么使用Waven?Waven是什么?
  9. PID详解1(理论+整定方法)
  10. C++ warning: comparison is always false due to limited range of data type [-Wtype-limits]