java 合并文件-分割文件
2016-05-11 12:14
411 查看
/* 合并文件。 SequenceInputStream表示其他输入流的逻辑串联。 它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾, 接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。 构造方法: SequenceInputStream(Enumeration<? extends InputStream> e) 通过记住参数来初始化新创建的 SequenceInputStream,该参数必须是生成运行时类型为 InputStream 对象的 Enumeration 型参数。 SequenceInputStream(InputStream s1, InputStream s2) 通过记住这两个参数来初始化新创建的 SequenceInputStream(将按顺序读取这两个参数,先读取 s1,然后读取 s2),以提供从此 SequenceInputStream 读取的字节。 */ import java.io.*; import java.util.*; class SequenceInputStreamDemo { public static void main(String[] args) throws IOException { Vector<FileInputStream> v=new Vector<FileInputStream>(); v.add(new FileInputStream("D:\\myfile\\mycode\\1.txt")); v.add(new FileInputStream("D:\\myfile\\mycode\\2.txt")); v.add(new FileInputStream("D:\\myfile\\mycode\\3.txt")); Enumeration<FileInputStream> en=v.elements(); SequenceInputStream sis=new SequenceInputStream(en); FileOutputStream fos=new FileOutputStream("D:\\myfile\\mycode\\sum.txt"); byte[] b=new byte[1024]; int len; while((len=sis.read(b))!=-1) { fos.write(b,0,len); } sis.close(); fos.close(); } }
/* 分割文件 */ import java.io.*; import java.util.*; class SplitFile { public static void main(String[] args) throws IOException { splitPic();//切割图片 mergePic();//合并图片--使用Vector //mergePic_1();//合并图片--使用ArrayList } public static void splitPic()throws IOException //切割图片 { FileInputStream fis=new FileInputStream("D:\\图片\\test.jpg"); FileOutputStream fos=null; int len=0; int count=0; byte[] b=new byte[1024*1024]; while((len=fis.read(b))!=-1) { fos=new FileOutputStream("D:\\图片\\test\\"+(count++)+".part"); fos.write(b,0,len); fos.close(); } fis.close(); } public static void mergePic()throws IOException //合并图片 { Vector<FileInputStream> v=new Vector<FileInputStream>(); v.add(new FileInputStream("D:\\图片\\test\\0.part")); v.add(new FileInputStream("D:\\图片\\test\\1.part")); Enumeration<FileInputStream> en=v.elements(); SequenceInputStream sis=new SequenceInputStream(en); FileOutputStream fos=new FileOutputStream("D:\\图片\\test\\new.jpg"); int len=0; byte[] b=new byte[1024]; while((len=sis.read(b))!=-1) { fos.write(b,0,len); } fos.close(); sis.close(); } public static void mergePic_1()throws IOException //合并图片 { ArrayList<FileInputStream> al=new ArrayList<FileInputStream>(); al.add(new FileInputStream("D:\\图片\\test\\0.part")); al.add(new FileInputStream("D:\\图片\\test\\1.part")); final Iterator<FileInputStream> it=al.iterator(); Enumeration<FileInputStream> en=new Enumeration<FileInputStream>(){ public boolean hasMoreElements() { return it.hasNext(); } public FileInputStream nextElement() { return it.next(); } }; SequenceInputStream sis=new SequenceInputStream(en); FileOutputStream fos=new FileOutputStream("D:\\图片\\test\\new.jpg"); int len=0; byte[] b=new byte[1024]; while((len=sis.read(b))!=-1) { fos.write(b,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播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树