使用JavaIO技术实现文件切割与文件合并

来源:互联网 发布:腾龙信息网络工程公司 编辑:程序博客网 时间:2024/06/05 00:45

1文件切割

直接上代码:

package com.test;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;/** * 文件切割 * @author duanyitao * */public class SplitFile {    public static void main(String[] args) throws Exception{        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File("1.jpg")));        BufferedOutputStream bos = null;        byte[] buf = new byte[bis.available()/3];        System.out.println(buf.length);        int len = 0;        int count = 0;        while((len = bis.read(buf))!=-1){            bos = new BufferedOutputStream(new FileOutputStream(new File("1_"+(++count)+".jpg.part")));            bos.write(buf,0,len);            bos.flush();            bos.close();        }        bis.close();    }}

2文件合并

直接上代码:

package com.test;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.SequenceInputStream;import java.util.ArrayList;import java.util.Enumeration;import java.util.List;public class MergeFile {    public static void main(String[] args) throws Exception {        final List<InputStream> list = new ArrayList<InputStream>();        for (int i = 1; i < 5; i++) {            list.add(new FileInputStream("1_"+i+".jpg.part"));            System.out.println("1_"+i+".jpg.part");            System.out.println(new File("1_"+i+".jpg.part").exists());        }        Enumeration<InputStream> en = new Enumeration<InputStream>() {            @Override            public InputStream nextElement() {                // TODO Auto-generated method stub                return list.iterator().next();            }            @Override            public boolean hasMoreElements() {                // TODO Auto-generated method stub                return list.iterator().hasNext();            }        };         SequenceInputStream sis = new SequenceInputStream(en);         FileOutputStream fos = new FileOutputStream("duanyitao_1.jpg");            byte[] buf = new byte[1024];            int len = 0;            while((len = sis.read(buf))!=-1){                fos.write(buf,0,len);                fos.flush();            }            fos.close();            sis.close();    }}
0 0
原创粉丝点击