用输入输出流做的
一个 JPG 文件的拆分和合并的问题 不大会做 求高人帮忙import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;public class CfenHbin {
public static void main(String[] args) throws IOException {
File f = new File("d:/a.jpg");
InputStream in = new FileInputStream(f);
int i = 1;
byte[] b = new byte[512];
int fa = in.read(b);
File ff = new File("d:/b.jpg");
OutputStream out = new FileOutputStream(ff);
while (fa != -1) {
out.write(b, 0, fa);
fa = in.read(b);
i++;
}
}
}我只写出这个来了…… 但是 应该是拆成 几个文件  然后再合并 大家帮帮忙

解决方案 »

  1.   

    一个inputstream,多个outputstream,然后write一段byte后轮换outputstream就可以了然后再合并???
      

  2.   

    File f = new File("d:/a.jpg"); 
    InputStream in = new FileInputStream(f); 
    int i = 1; 
    byte[] b = new byte[512]; 
    int fa; 
    String filename = "d:/b.jpg";
    while ((fa=in.read(b)) != -1) { 
      OutputStream out = new FileOutputStream(new File(filename+i)); 
      out.write(b, 0, fa); 
      out.close();
      i++; 
      

  3.   

    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.SequenceInputStream;
    import java.util.ArrayList;
    import java.util.Enumeration;
    import java.util.Iterator;
    import java.util.List;//一个 JPG 文件的拆分和合并的问题
    public class JpgSplit { /**
     * @param args
     */
    public void seperate(String filename,int size)throws IOException{
    FileInputStream fis=new FileInputStream(new File(filename));
    BufferedInputStream bis=new BufferedInputStream(fis);

    byte[] data=new byte[1];
    int count=0;
    if(fis.available()%size ==0)
    count=fis.available()/size;
    else
    count=fis.available()/size+1;

    for(int i=0;i<count;i++){
    int num=0;

    File file=new File(filename+"_"+(i+1));
    BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(file));

    while(bis.read(data)!=-1){
    bos.write(data);
    num++;
    if(num==size){
    bos.flush();
    bos.close();
    break;
    }
    }
    }
    System.out.println("分割为"+count+"个文件");
    }
    public void concatenate(String filename,int number) throws IOException{
    List<InputStream> list=new ArrayList<InputStream>();

    for(int i=0;i<number;i++){
    File file=new File(filename+"_"+(i+1));
    list.add(i, new FileInputStream(file));
    }

    final Iterator<InputStream> iterator=list.iterator();

    Enumeration<InputStream> enumeration=new Enumeration<InputStream>(){
    public boolean hasMoreElements(){
    return iterator.hasNext();
    }
    public InputStream nextElement(){
    return iterator.next();
    }
    };

    BufferedInputStream bis=new BufferedInputStream(new SequenceInputStream(enumeration),8192);
    BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(filename),8192);

    byte[] data=new byte[1];

    while(bis.read(data)!=-1)
    bos.write(data);

    bis.close();
    bos.flush();
    bos.close();

    System.out.println("组合"+number+"个文件 OK!!");

    }
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    JpgSplit js=new JpgSplit();

    try{
    // js.seperate("E:\\a.JPG", 100000);
    js.concatenate("E:\\a.JPG", 15);
    }catch(Exception e){
    e.printStackTrace();
    } }}