ダークホースプログラマー-ファイルのマージと切断


-----------  androidトレーニングJAvaトレーニング、java学習型技術ブログ、あなたとの交流を楽しみにしています! ------------
/*ストリームのマージ: 1つのソースファイルを1つのファイルにマージ 構築方法: Vector(Collection c)           指定したcollectionの要素を含むベクトルを構築します.          これらの要素はcollectionの反復器によって要素の順序で並べ替えられます.  SequenceInputStream(Enumeration e)           パラメータを覚えて新しく作成したSequenceInputStreamを初期化し、          このパラメータは、実行時タイプがInputStreamオブジェクトであるEnumeration型パラメータを生成する必要があります.   方法: Enumeration <>  elements()                  このベクトルのコンポーネントの列挙を返します.  */
 import java.util.*;
 import java.io.*;
 class SequenceDemo
 {
 	public static void main(String[] args) throws IOException
 	{
      //          
 	  Vector<FileInputStream> v=new Vector<FileInputStream>();	
 	  v.add(new FileInputStream("D:\\TDDOWNLOAD\\javawork\\     \\   \\1.txt"));
 	  v.add(new FileInputStream("D:\\TDDOWNLOAD\\javawork\\     \\   \\2.txt"));
 	  v.add(new FileInputStream("D:\\TDDOWNLOAD\\javawork\\     \\   \\3.txt"));
 	  Enumeration<FileInputStream> en=v.elements();
 	  SequenceInputStream sis=new SequenceInputStream(en);//             
 	  FileOutputStream fos=new FileOutputStream("D:\\TDDOWNLOAD\\javawork\\     \\   \\4.txt");
 	  byte[] buf=new byte[1024];
 	  int len=0;
 	  while((len=sis.read(buf))!=-1)
 	  {
 	  	fos.write(buf,0,len);
 	  }
 	  fos.close();
 	  sis.close();
 	}
 }

 2つのパラメータの、直接new 2つのオブジェクトでいいです
FileInputStream fis1=new FileInputStream("D:\\TDDOWNLOAD\\javawork\\     \\   \\1.txt");
 	  FileInputStream fis2=new FileInputStream("D:\\TDDOWNLOAD\\javawork\\     \\   \\2.txt");
 	  SequenceInputStream sis=new SequenceInputStream(fis1,fis2);
 	  FileOutputStream fos=new FileOutputStream("D:\\TDDOWNLOAD\\javawork\\     \\   \\4.txt");

 切断ファイル:1つの質問対象を複数のファイルに切断し、切断後にマージし、まずsplitFileメソッドをコンパイルする.すなわち、先にカットし、マージする.ここでマージするArrayListクラスは、Vectorクラスより性能が高い
 import java.util.*;
 import java.io.*;
 class SplitDemo
 {
 	public static void main(String[] args) throws IOException
 	{
 		//SplitFile();
 		SequenceFile();
 	}
 	public static void SequenceFile()throws IOException
 	{
 		ArrayList<FileInputStream> al=new ArrayList<FileInputStream>();//ArrayList     vetor   
 	    for(int x=1;x<=3;x++)
 	    {
 	    	al.add(new FileInputStream("D:\\TDDOWNLOAD\\javawork\\     \\    \\"+x+".part"));
 	    }
 	    final Iterator<FileInputStream> it=al.iterator();
 	    Enumeration<FileInputStream> en=new Enumeration<FileInputStream>()
 	    {
 	    	public boolean hasMoreElements()//           it;          
 	    	{
 	    		return it.hasNext();
 	    	}
 	    	public FileInputStream nextElement()
 	    	{
 	    		return it.next();
 	    	}
 	    };
 	    SequenceInputStream sis=new SequenceInputStream(en);//             
    	FileOutputStream fos=new FileOutputStream("D:\\TDDOWNLOAD\\javawork\\     \\    \\SequenceFile.pdf");
 	    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:\\TDDOWNLOAD\\javawork\\     \\    \\03.pdf");
 	    FileOutputStream fos=null;//       
 	    byte[] buf=new byte[1024*1024];//     1M    ,03.pdf     2.28 MB (2,398,408   ),        
        int len=0;
        int count=1;
        while((len=fis.read(buf))!=-1)
        {
        	fos=new FileOutputStream("D:\\TDDOWNLOAD\\javawork\\     \\    \\"+(count++)+".part");
            fos.write(buf,0,len);
            fos.close();
        }
        fis.close();
 	}
}

-----------  androidトレーニングJAvaトレーニング、java学習型技術ブログ、あなたとの交流を楽しみにしています! ------------