需求:现在文件的大小越来越大,很多移动设备无法一次把文件一次全部拷贝完全,这种情况就需要把文件分割小点,分几次传送,然后,合并起来,这样就实现了大文件的拷贝功能

介绍:我的这个用的是吧文件分割成1M大小的文件,当然,可以改成很大的容量,这个只要改变下就行了。合并也可以的。

package cn.hncu.IO;import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;public class GraphFileSplit extends JFrame implements ActionListener{JButton btnsplit,btnmerge;String filename;static JTextField tf;public GraphFileSplit(){setTitle("文件分割器");this.setLayout(new FlowLayout());//采用流布局方式this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setBounds(100, 100,400, 500);//设置边界JLabel lb=new JLabel("请选择类型");//标签btnsplit= new JButton("分割文件");btnmerge=new JButton("合并文件");//按钮btnsplit.addActionListener(this);JLabel  lb2=new JLabel("文件分割后存放在当前目录下的“Split”\r\n");JLabel  lb3=new JLabel("请注意: 文件合并后的文件存放在你电脑E盘的的ex目录下\r\n");tf=new JTextField(30);//添加组件btnmerge.addActionListener(this);this.getContentPane().add(lb);this.getContentPane().add(btnsplit);this.getContentPane().add(btnmerge);this.getContentPane().add(lb2);this.getContentPane().add(lb3);this.getContentPane().add(tf);this.setResizable(false);this.setVisible(true);}public static void main(String[] args) {new GraphFileSplit(); //主函数,new 对象}@Overridepublic void actionPerformed(ActionEvent e)  {if(e.getSource()==btnsplit){//对分割按钮进行监听JFileChooser jf=new JFileChooser();//文件选择器int resout=jf.showOpenDialog(null);if(resout==JFileChooser.APPROVE_OPTION){File file=jf.getSelectedFile();filename=file.getName();
//              System.out.println(file.getAbsolutePath());//这样包含有文件名;C:\Users\xinxin\Documents\Beyond - 光辉岁月.mp3
//              System.out.println(file.getParent());//C:\Users\xinxin\Documents
//              System.out.println(file.getName());//Beyond - 光辉岁月.mp3
//              System.out.println(file);File des=new File(file.getParent(),"fileSplit");//file.getParent()可以得到文件名之前的绝对路径try {Split(file,des);} catch (IOException e1) {throw new RuntimeException("分割出现错误");}}}if(e.getSource()==btnmerge){File[] file;//将选中的文件有文件数组装JFileChooser jf=new JFileChooser();jf.setMultiSelectionEnabled(true);int resout=jf.showOpenDialog(null);if(resout==JFileChooser.APPROVE_OPTION){file =jf.getSelectedFiles();if(file.length==0){throw new RuntimeException("文件不存在");}try {merge(file,filename);} catch (IOException e1) {e1.printStackTrace();}}}}private void merge(File[] file,String filename) throws IOException {//合并的时候用到合并流ArrayList<FileInputStream> alist=new ArrayList<FileInputStream>();for(int i=0;i<file.length;i++){
//          System.out.println(file[i].getParent());//分割后输出文件路径alist.add(new FileInputStream(new File( file[i].getParent(),file[i].getName())));}Enumeration<FileInputStream> en =Collections.enumeration(alist);SequenceInputStream se =new SequenceInputStream(en);String paht="e:\\ex\\";//只能合并后的存储路径,告诉用户路径File file0=new File(paht);if(!file0.exists()){file0.mkdirs();//文件不存在就创建一个}
//      System.out.println(filename+"11111111");
//      System.out.println(file0+ filename+"fileoasdasdsasdas");if(filename==null){filename="split.txt";}FileOutputStream out =new FileOutputStream(file0+ "\\"+filename);tf.setText("合并的文件存放在"+file0+"\\"+filename);int len =0;byte []b=new byte[1024*1024];//开始合并while((len=se.read(b))!=-1){out.write(b, 0, len);}out.close();se.close();
}//分割核心代码private  static void Split(File file, File des) throws IOException {FileInputStream in =new FileInputStream(file);//分割必须先读进数组,数组空间开1M大小FileOutputStream out=null;int count=1;if(!des.exists()){des.mkdirs();}byte a[]=new byte[1024*1024];//大小为1Mint len=0;while((len=in.read(a))!=-1){String desrc=file.getName()+(count++);File f=new File(des,desrc);out =new FileOutputStream(f);tf.setText("分割完成后,文件放在"+f.getParent());out.write(a,0,len);out.close();}
}}

部分界面截图

超级文件分割《合并》机(分割大文件)相关推荐

  1. linux合并iso文件,多个ISO文件怎样合并为一个ISO文件(Linux下的操作)

    多个ISO文件怎样合并为一个ISO文件?我下载了几张比较小的ISO文件,想做进一张光盘里去,还要在光盘启动下运行? 解决办法: 1. 首先你必須要有一个很大的磁盘空间 大概要3.5g是空闲的 建立一个 ...

  2. Python——dat文件批量合并为同一个csv文件

    Python--dat文件批量合并为同一个csv文件 目的:将文件夹ZW下的所有dat文件(含子文件夹)合并,并保存到results.csv中,便于后续使用excel进行处理与分析. 代码: #!/u ...

  3. java实现多个mav文件拼接合并成一个mav文件

    java实现多个mav文件拼接合并成一个mav文件,绝对有效 解决方法: import java.io.File; import java.io.IOException; import java.io ...

  4. HTML转化为pdf文件并合并多个pdf文件

    HTML转化为pdf文件并合并多个pdf文件 转化的需要使用到  Wkhtmltopdf 这个工具. 下面代码的介绍; 首先我们要获取到web页面,然后把web页面转化为pdf文件,之后是合并pdf( ...

  5. php+如何按文字分割文件夹,PHP实现的大文件切割与合并功能示例

    本文实例讲述了PHP实现的大文件切割与合并功能.分享给大家供大家参考,具体如下: 分割代码 split.php $i = 0; //分割的块编号 $fp = fopen("hadoop.sq ...

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

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

  7. Facebook图片存储系统Haystack——存小文件,本质上是将多个小文件合并为一个大文件来降低io次数,meta data里存偏移量...

    转自:http://yanyiwu.com/work/2015/01/04/Haystack.html 一篇14页的论文Facebook-Haystack, 看完之后我的印象里就四句话: 因为[传统文 ...

  8. linux下实现对多个文件去重软件,Linux下大文件的排序和去重复

    简单的用法如下,如一个文件名:happybirthday.txt cat happybirthday.txt (显示文件内容) Happy Birthday to You! Happy Birthda ...

  9. php webuploader大文件,web uploader 上传大文件总结

    由于业务需要,需要上传大文件,已有的版本无法处理IE版本,经过调研,百度的 webuploader 支持 IE 浏览器,而且支持计算MD5值,进而可以实现秒传的功能. 大文件上传主要分为三部分,预上传 ...

  10. php怎样加密文件,如何使用php加密大文件并通过命令行解密?

    我正在用 PHP编写一个小脚本来备份我的文件.在我从服务器传输文件之前,我想加密它们. 我在我的脚本的早期版本中通过在我的Linux服务器上使用exec()和OpenSSL来做到这一点.现在我正在寻找 ...

最新文章

  1. 英伟达官宣:CUDA 将不再支持 macOS
  2. css出现的问题以及解决,div+css的浮动常出现的问题以及解决办法_html/css_WEB-ITnose...
  3. Oracle查询优化-04插入、更新与删除数据
  4. I/O Performance HOWTO: Avoiding Bounce Buffers
  5. server如何调用 thrift_Thrift入门很简单
  6. CTF训练计划—[CISCN2019]Easyweb
  7. Spark修炼之道(高级篇)——Spark源码阅读:第六节 Task提交
  8. 7-5 公路村村通 (30 分)(C语言实现)
  9. 跨境电商是什么?跨境电商有哪些模式?
  10. oracle+查表物理块数,查询Oracle表实际物理使用大小
  11. scala中实现break与continue功能
  12. Appium环境搭建
  13. ubuntu16.04出现重复进入登陆界面问题
  14. 一位宝石爱好者的零起点建站攻略
  15. 热温冷冰,数据存储需要全生命周期管理
  16. 【阅读笔记】《CFUN: Combining Faster R-CNN and U-net Network for Efficient Whole Heart Segmentation》
  17. 云服务器怎么配置cpu与内存搭配
  18. 微信小程序rich-text富文本图片自适应处理
  19. 《高质量程序设计指南——C++/C》第三版勘误
  20. 北大计算机图灵班,北京大学举办图灵班开班仪式

热门文章

  1. 解决微信电脑版备份的问题:当前网络状况复杂,请尝试使用其它网络
  2. WEB安全之DIV CSS基础(二):文字和文本的属性、列表样式和伪类超链接
  3. Spring 的 init-method 和 destory-method
  4. Unity中Destory()、DestoryImmediate()和GameObject==null问题
  5. 线性代数系列(二)--矩阵变换
  6. 全面发展还是术业专攻?这就是答案
  7. Unity------Bounds
  8. mac修改默认python版本为python3
  9. 氢os关闭android键盘,氢OS11到来前,先听听这些一加用户对氢OS的吐槽
  10. 如何在android运行lua脚本(最简单的讲解,一看就懂)