文件的分割和合并
2016-01-06 04:02
465 查看
文件切割器
文件合并
文件合并
文件切割合并+配置文件
public class Io52_1 { private static final int SiZE = 1024*1024; public static void main(String[] args) throws IOException { File file=new File("E:\\Io\\10.mp3"); splitFile(file); } public static void splitFile(File file) throws IOException{ //用读取流关联源文件。 FileInputStream fis=new FileInputStream(file); //定义一个1M的缓冲区 byte[] buf=new byte[SiZE]; //创建目的 FileOutputStream fos=null; int len=0; int count=1; File dir=new File("E:\\partfiles"); if(!dir.exists()){ dir.mkdirs(); } while((len=fis.read(buf))!=-1){ fos=new FileOutputStream(new File(dir,(count++)+".part")); fos.write(buf, 0, len); } fis.close(); fos.close(); } }
文件合并
public class Io53_1 { public static void main(String[] args) throws IOException { File dir=new File("E:\\partfiles"); mergeFile(dir); } public static void mergeFile(File dir) throws IOException{ ArrayList<FileInputStream> a1=new ArrayList<FileInputStream>(); for(int x=1;x<=9;x++){ a1.add(new FileInputStream(new File(dir,x+".part"))); } Enumeration<FileInputStream> en=Collections.enumeration(a1); SequenceInputStream sis=new SequenceInputStream(en); FileOutputStream fos=new FileOutputStream(new File(dir,"10.mp3")); byte[] buf=new byte[1024]; int len=0; while((len=sis.read(buf))!=-1){ fos.write(buf, 0, len); } fos.close(); sis.close(); } }
文件合并
public class Io53_1 { public static void main(String[] args) throws IOException { File dir=new File("E:\\partfiles"); mergeFile(dir); } public static void mergeFile(File dir) throws IOException{ ArrayList<FileInputStream> a1=new ArrayList<FileInputStream>(); for(int x=1;x<=9;x++){ a1.add(new FileInputStream(new File(dir,x+".part"))); } Enumeration<FileInputStream> en=Collections.enumeration(a1); SequenceInputStream sis=new SequenceInputStream(en); FileOutputStream fos=new FileOutputStream(new File(dir,"10.mp3")); byte[] buf=new byte[1024]; int len=0; while((len=sis.read(buf))!=-1){ fos.write(buf, 0, len); } fos.close(); sis.close(); } }
文件切割合并+配置文件
public class Io54_1 { private static final int SiZE = 1024*1024; public static void main(String[] args) throws IOException { /* File file=new File("E:\\Io\\5.mp3"); splitFile_2(file);*/ File dir=new File("E:\\partfiles"); mergeFile_2(dir); } //切割文件方法 public static void splitFile_2(File file) throws IOException{ //用读取流关联源文件。 FileInputStream fis=new FileInputStream(file); //定义一个1M的缓冲区 byte[] buf=new 4000 byte[SiZE]; //创建目的 FileOutputStream fos=null; int len=0; int count=1; /* * 切割文件时,必须记录住被切割文件的名称,以及 * 切割出来碎片文件的个数,以方便合并。 * * **/ File dir=new File("E:\\partfiles"); if(!dir.exists()){ dir.mkdirs(); } while((len=fis.read(buf))!=-1){ fos=new FileOutputStream(new File(dir,(count++) + ".part")); fos.write(buf, 0, len); fos.close(); } Properties prop=new Properties(); //将被切割文件的信息保存到prop集合中。 prop.setProperty("partcount", count+""); prop.setProperty("filename", file.getName()); fos=new FileOutputStream(new File(dir,count+".properties")); //将prop集合中的数据存储到集合中 prop.store(fos, "save file info"); fis.close(); fos.close(); } //合并文件的方法 public static void mergeFile_2(File dir) throws IOException{ /* * * 获取指定目录下的配置文件对象============= * */ File[] files=dir.listFiles(new SuffixFileter(".properties")); if(files.length!=1){ throw new RuntimeException(dir+",该目录下没有propertise的文件,或者不唯一"); } //配置文件对象 File confie=files[0]; //获取该文件中的信息============================ Properties prop=new Properties(); FileInputStream fis=new FileInputStream(confie); prop.load(fis); String filename=prop.getProperty("filename"); int count =Integer.parseInt(prop.getProperty("partcount")); //获取该目录下的所有碎片文件============== File[] partFiles=dir.listFiles(new SuffixFileter(".part")); if(partFiles.length!=(count-1)){ throw new RuntimeException("碎片文件不符合要求,个数不对"+count+"个"); } //将碎片文件和流对象关联并存储到集合中============= ArrayList<FileInputStream> a1=new ArrayList<FileInputStream>(); for(int x=1;x<partFiles.length;x++){ a1.add(new FileInputStream(partFiles[x])); } //将多个流合并成一个序列流============= Enumeration<FileInputStream> en=Collections.enumeration(a1); SequenceInputStream sis=new SequenceInputStream(en); FileOutputStream fos=new FileOutputStream(new File(dir,filename)); byte[] buf=new byte[1024]; int len=0; while((len=sis.read(buf))!=-1){ fos.write(buf, 0, len); } fos.close(); sis.close(); } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树