文件切割与合并
来源:互联网 发布:机顶盒桌面软件 编辑:程序博客网 时间:2024/03/29 06:05
实现对大文件的切割与合并。
按指定个数切(如把一个文件切成10份)或按指定大小切(如每份最大不超过10M),这两种方式都可以。
文件切割:把一个文件切割成多个碎片,每个碎片的大小不超过1M。自己可把功能进一步扩展:切割前的文件名、长度,切割后的碎片个数、文件名等信息可写到第一个碎片中或另外用properties把这些写到配置文件中。
文件合并:这里简单假设已知被合并目录的File对象和原文件的名字。其实这些完全可以做成活的,如把这些信息保存在碎片文 件或配置文件,也可以同样用文件选择对话框来读取用户的选择。
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.JFileChooser;import javax.swing.JOptionPane;public class qiege { public static void main(String[] args) throws IOException { JFileChooser jfc = new JFileChooser();//出现文件选择框 int result = jfc.showOpenDialog(null); if (result == JFileChooser.APPROVE_OPTION) { File file = jfc.getSelectedFile(); // System.out.println("-----"+file.getName());-----录像73 静态块.lxe File dir = file.getParentFile(); // System.out.println(file.getParentFile()+dir.getAbsolutePath()+dir.getName()); //F:\新建文件夹 F:\新建文件夹 新建文件夹 fileSplit(file, dir); //切割 String fileName = file.getName(); File desDir = new File(dir, "split"); mergerFile(desDir, fileName); //合并 } } private static void fileSplit(File file, File dir) throws IOException { File desDir = new File(dir.getAbsolutePath() + "/split"); if (!desDir.exists()) { desDir.mkdirs();//可以在不存在的目录中创建文件夹 mkdik()只能在已经存在目录中创建 } FileInputStream fin = new FileInputStream(file); FileOutputStream fout = null; int len = 0; int count = 1; byte buf[] = new byte[1024 * 1024]; while ((len = fin.read(buf)) != -1) { String str = file.getName();// 录像73 静态块.lxe String nm = str.substring(0, str.lastIndexOf("."));// 录像73 静态块 String fileName = nm + "(" + (count++) + ").part";// 录像73 // 静态块(122).part fout = new FileOutputStream(desDir.getAbsolutePath() + "/" + fileName);// F:\新建文件夹\split/录像73 静态块(122).part fout.write(buf, 0, len); fout.close(); } fin.close(); JOptionPane.showMessageDialog(null, "文件切割完毕"); }private static void mergerFile(File srcDir, String fileName)throws IOException {//合并的文件夹,合并名 if (!srcDir.exists()) { JOptionPane.showMessageDialog(null, "合并的文件不存在"); return; } File partFiles[] = srcDir.listFiles(); if (partFiles == null || partFiles.length == 0) { JOptionPane.showMessageDialog(null, "碎片不存在"); return; } ArrayList<FileInputStream> list = new ArrayList<FileInputStream>(); for (int i = 1; i < partFiles.length; i++) { String nm = fileName.substring(0, fileName.lastIndexOf(".")); list.add(new FileInputStream(new File(srcDir, nm + "(" + (i + 1) + ").part"))); //(父路径,子名) } Enumeration<FileInputStream> en = Collections.enumeration(list); SequenceInputStream sis = new SequenceInputStream(en); FileOutputStream fout = new FileOutputStream(new File(srcDir, fileName));//合并的文件夹下的文件 byte buf[] = new byte[1024]; int len = 0; while ((len = sis.read(buf)) != -1) { fout.write(buf, 0, len); } sis.close(); fout.close(); }}
0 0
- 文件切割与合并
- 文件切割与合并
- java 文件切割与合并
- java文件切割与合并
- 文件的切割与合并
- 文件的切割与合并
- 黑马程序员-文件的切割与合并
- 文件的切割与合并练习
- 大文件的切割与合并
- IO流--切割与合并文件
- Java---练习:文件切割与合并(1)
- Linux大文件的切割与合并
- SequenceInputStream 实现文件的切割与合并
- File类文件的切割与合并
- Java IO流文件切割 与合并
- 文件切割/合并工具
- 如何切割 合并文件
- 切割合并大文件
- MVC 自定义AuthorizeAttribute实现权限管理
- Linux系统备份与恢复--概述
- solr-数据库导入
- Ubuntu12.04-git的安装
- 生产者与消费者小例子
- 文件切割与合并
- 给刚出道的游戏开发人员的几点忠告
- error could not create the java virtual machine.error:a fatal exception has occurred...问题之解决
- UVA 1151 Buy or Build
- 计算一个文件夹里的字符数
- 树
- VS2008 + Qt4设置exe图标
- C#中的"#region"跟"#endregion"以及public,string,using,等进一步的了解
- Linux学习_udp传输小例子