A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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();
        }
}

评分

参与人数 1黑马币 +2 收起 理由
乔兵 + 2

查看全部评分

1 个回复

倒序浏览
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");  时发生的问题

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马