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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/*
切割一个文件

运用合并流将几个文件合并到一个文件
*/
import java.util.*;
import java.io.*;
class SequenceInputStreamDemo
{
        public static void main(String[] args) throws IOException
        {
                //qiege();
                //hebing();
        }
        public static void qiege()throws IOException
        {
                BufferedInputStream bi=new BufferedInputStream(new FileInputStream("D:\\aa\\day20\\新建文件夹\\1.mp3"));
                BufferedOutputStream bo;
                int num=0,count=1;
                byte[] arr=new byte[1024*1024];
                while((num=bi.read(arr))!=-1)
                {

                        bo=new BufferedOutputStream(new FileOutputStream("D:\\aa\\day20\\新建文件夹\\"+(count++)+".part"));
                        bo.write(arr,0,num);
                        bo.close();
                }
                bi.close();
        }
        public static void hebing()throws IOException
        {
                FileInputStream f1=new FileInputStream("D:\\aa\\day20\\新建文件夹\\1.part");
                FileInputStream f2=new FileInputStream("D:\\aa\\day20\\新建文件夹\\2.part");
                FileInputStream f3=new FileInputStream("D:\\aa\\day20\\新建文件夹\\3.part");
                FileInputStream f4=new FileInputStream("D:\\aa\\day20\\新建文件夹\\4.part");
                FileInputStream f5=new FileInputStream("D:\\aa\\day20\\新建文件夹\\5.part");
                Vector<FileInputStream> v=new Vector<FileInputStream>();
                v.add(f1);
                v.add(f2);
                v.add(f3);
                v.add(f4);
                v.add(f5);
                Enumeration<FileInputStream> e=v.elements();
                SequenceInputStream si=new SequenceInputStream(e);
                BufferedOutputStream bo1=new BufferedOutputStream(new FileOutputStream("D:\\aa\\day20\\新建文件夹\\2.mp3"));
                int num=0;
                byte[] arr1=new byte[1024*1024];
                while((num=si.read(arr1))!=-1)
                {
                        bo1.write(arr1,0,num);
                        System.out.println(num);
                        bo1.flush();
                }
                bo1.close();
                si.close();
        }
}

评分

参与人数 1技术分 +1 黑马币 +6 收起 理由
枫儿 + 1 + 6 神马都是浮云

查看全部评分

1 个回复

倒序浏览
  1. /*
  2. 切割一个文件

  3. 运用合并流将几个文件合并到一个文件
  4. */
  5. import java.util.*;
  6. import java.io.*;
  7. class SequenceInputStreamDemo
  8. {
  9.         public static void main(String[] args) throws IOException
  10.         {
  11.                 //qiege();
  12.                 //hebing();
  13.         }
  14.         public static void qiege()throws IOException
  15.         {
  16.                 BufferedInputStream bi=new BufferedInputStream(new FileInputStream("D:\\aa\\day20\\新建文件夹\\1.mp3"));
  17.                 BufferedOutputStream bo;
  18.                 int num=0,count=1;
  19.                 byte[] arr=new byte[1024*1024];
  20.                 while((num=bi.read(arr))!=-1)
  21.                 {

  22.                         bo=new BufferedOutputStream(new FileOutputStream("D:\\aa\\day20\\新建文件夹\\"+(count++)+".part"));
  23.                         bo.write(arr,0,num);
  24.                         bo.close();
  25.                 }
  26.                 bi.close();
  27.         }
  28.         public static void hebing()throws IOException
  29.         {
  30.                         /*

  31.                                 上面切割的时候,是按照每个文件1M切的,如果刚好能窃够五个文件,那这个地方合成就不会出错,如果文件不是五个,虚拟机肯定会报错了
  32.                                 既然知道SequenceInputStream流,相比也学File了吧  这里可以用File做,第一步得出文件列表,然后遍历,添加到Vector中就行了
  33.                                 这样做比较灵活  不必知道切了多少个文件


  34.                 FileInputStream f1=new FileInputStream("D:\\aa\\day20\\新建文件夹\\1.part");
  35.                 FileInputStream f2=new FileInputStream("D:\\aa\\day20\\新建文件夹\\2.part");
  36.                 FileInputStream f3=new FileInputStream("D:\\aa\\day20\\新建文件夹\\3.part");
  37.                 FileInputStream f4=new FileInputStream("D:\\aa\\day20\\新建文件夹\\4.part");
  38.                                 FileInputStream f5=new FileInputStream("D:\\aa\\day20\\新建文件夹\\5.part");
  39.                 Vector<FileInputStream> v=new Vector<FileInputStream>();
  40.                 v.add(f1);
  41.                 v.add(f2);
  42.                 v.add(f3);
  43.                 v.add(f4);
  44.                                 v.add(f5);
  45.                          */
  46.                                 Vector<FileInputStream> v = new Vector<>();
  47.                                 File dir = new File("D:\\aa\\day20\\新建文件夹");
  48.                                 FileInputStream f;
  49.                                 File[] files = dir.listFiles();

  50.                                 for(File file : files) {
  51.                                         if(file.isFile()) {
  52.                                                 f = new FileInputStream(file);
  53.                                                 v.add(f);
  54.                                         }
  55.                                 }

  56.                 Enumeration<FileInputStream> e=v.elements();
  57.                 SequenceInputStream si=new SequenceInputStream(e);
  58.                 BufferedOutputStream bo1=new BufferedOutputStream(new FileOutputStream("D:\\aa\\day20\\新建文件夹\\2.mp3"));
  59.                 int num=0;
  60.                 byte[] arr1=new byte[1024*1024];
  61.                 while((num=si.read(arr1))!=-1)
  62.                 {
  63.                         bo1.write(arr1,0,num);
  64.                         System.out.println(num);
  65.                         bo1.flush();
  66.                 }
  67.                 bo1.close();
  68.                 si.close();
  69.         }
  70. }
复制代码

评分

参与人数 1技术分 +1 黑马币 +6 收起 理由
枫儿 + 1 + 6 赞一个!

查看全部评分

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