您的位置:首页 > 职场人生

黑马程序员------ io流对一个图片文件进行分割与合并

2015-03-27 19:38 302 查看
 黑马程序员------ io流对一个图片文件进行分割与合并   

     

   ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交-------  

                       

 一. 要把一个字节输入流的相关联的图片文件A.jpg 进行分割成三部分数据文件1.part 2.part 3.part

    步骤:1首相建立一个字节输入流的对象fis相及关联的图片文件A.jpg

                2建立缓冲区字节数组buf,把读取的三部分数据文件1.part 2.part 3.part分别存在数组里

                3建立第一个字节输出流的对象fos1= new FileOutputStream("c:\\1.part");

                  把数组的数据(第一碎片数据)存入到 字节输出流的对象fos1关联的文件里c:\\1.part

                4建立第二个字节输出流的对象fos2= new FileOutputStream("c:\\2.part");

                   把数组的数据(第二碎片数据)存入到 字节输出流的对象fos2关联的文件里c:\\2.part

                 5建立第三个字节输出流的对象fos3= new FileOutputStream("c:\\3.part");

                    把数组的数据(第三碎片数据)存入到 字节输出流的对象fos3关联的文件里c:\\3.part

           

 二. 把这三部分碎片数据文件1.part 2.part 3.part合并一起存储字节输出流对象

        fos = new FileOutputStream("d:\\B.jpg")的关联文件d:\\B.jpg里。

    步骤1.首先建立ArryList集合的对象 al这三部分碎片数据文件1.part 2.part 3.part都读取到集合中

            2.获取集合ArryList集合的对象 al的三个碎片元素1.part 2.part 3.part  通过Iterator迭代和Enumeration枚举和获取元素

            3.通过合并输入流Sequence把通过迭代器和Enumeration枚举和获取元素合并为一个相关联的文件

            4.建立字节输出流对象fos = new FileOutputStream("d:\\B.jpg")及相关联图片文件d:\\B.jpg

            5.建立一个字节数组 buf  用来存储读取的文件

            6通过while循环,把数组 的所有数据写入到保存到字节输出流对象fos = new FileOutputStream("d:\\B.jpg")的关联文件

              d:\\B.jpg里。

   

import java.io.*;

import java.util.*;

 

class  FenHe

{

 public static void main(String[] args)

 {

      splitFile();

     merpeFile();

}

 

public static void splitFile() throws IOException

  {    //建立字节输入流,并读取文件 A.jpg(已存在)

     FileInputStream fis =new FileInputStream("c:\\A.jpg");

   

    FileOutputStream fos = null;

                //建立缓冲区数组,。把读取的数据存贮在数组里buf                                  

      byte[] buf = new byte[1024*1024];

        //int len=fis.read(buf);

     int len =0;

     int count=1;

                              

           //while循环从数组分别读取三次数据,每次读取的数据分别存储到三个文件 1.part 2.part 3.part  

             while((len = fis.read(buf))!=-1) 

                {

                    int len =fis.read(buf);

                                                       //c:     1        .part    

      fos=new  FileOutputStream("c:"+(count++)+".part");

                                        fos.write(buf,0,len); 

                                 fos.close();

                }

     fis.close();

     }

 

         public static void merpeFile() throws IOException

               {

                     //建立ArrayList集合,把1.part 2.part 3.part三个文件添加到集合里

      ArrayList<FileInputStream> al = new ArrayList<FileInputStream>();

                      

                                   al.add(FileInputStream("c:\\1.part"));

     al.add(FileInputStream("c:\\2.part"));

     al.add(FileInputStream("c:\\3.part"));

           /*或者用for循环也可以

          for(int x=1;x<=3;x++)

                         {  al.add(FileInputStream("c:\\"+x+".part"));}*/

         // 获取集合中的元素,用Iterator迭代和枚举Enumeration方法获取

    Iterator<FileInputStream> it=al.iterator();

    

    Enumeration<FileInputStream> en =new Enmeration<FileInputStream>()

       {

               public  boolean hasMoreElement()

        { return it.hasNext();}

         public FileInputStream nextElement()

          { return it.next();}

         }

              SequenceInputStream sis  =new SequenceInputStream(en);

                                     //建立输出流,建立新建文件 B.jpg

                         FileOutputStream fos = new FileOutputStream("d:\\B.jpg");

                            //建立字节数组缓冲区 读取数组数据,并写入到新建文件里

                    byte[] buf = new byte[1024*1024];

                           // int len=sis.read(buf);

                           int len = 0;

                               while(  (len=sis.read(buf))!=-1 )

       {

                          int len=sis.read(buf);

     fos.write(buf,0,len);

                             }

                   fos.close();

       fis.close();

 }

 

  

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐