黑马程序员技术交流社区

标题: 这文件合并总是失败不知什么原因?文件分离可以的 [打印本页]

作者: 靓仔    时间: 2013-11-5 15:37
标题: 这文件合并总是失败不知什么原因?文件分离可以的
import java.io.*;
import java.util.*;
class SplitFile
{
        public static void main(String[] args)throws IOException
        {
                //splitfile();
                hebing();
        }
        public static void hebing()throws IOException
        {
                ArrayList<FileInputStream> al=new ArrayList<FileInputStream>();
                for(int x=1;x<=4; x++)
                {
                        al.add(new FileInputStream("D:\\splitFiles\\"+x+".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:\\splitFiles\\2.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 static void splitfile()throws IOException
        {
                FileInputStream fis=new FileInputStream("D:\\1.mp3");//关联文件
                FileOutputStream fos=null;
                byte[] buf = new byte[1024*1024];
                int len=0;
                int count=1;
                while((len=fis.read(buf))!=-1)
                {
                        fos=new FileOutputStream("D:\\splitFiles\\"+(count++)+".part");
                        fos.write(buf,0,len);
                        fos.close();
                }
                fis.close();
                fos.close();
        }
}

作者: 零下五度的水    时间: 2013-11-5 16:30
for(int x=1;x<=4; x++),你的x<=4最好指明那个4是什么,目测是碎片文件个数
那这个for循环就是为了把所有的碎片文件整合到ArrayList<FileInputStream> al 集合中
那你的for循环只要包含al.add(new FileInputStream("D:\\splitFiles\\"+x+".part"));一条语句即可
你的程序报错是 java.io.IOException: 当文件已存在时,无法创建该文件。
明显是循环 FileOutputStream fos=new FileOutputStream("D:\\splitFiles\\2.mp3");  时发生的问题





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2