IOは、Javaが(シーケンスフロー--SequenceInputStream)を学習ストリーム

たSequenceInputStreamは、他の入力ストリームの論理的なシリーズを表します。
それは最終的に含まれる入力ストリームファイルの終わりに達するまで、それは、それがファイルの終わりに達するまで、最初からの入力ストリーム開始のセット、および第2から読み出され、そうで注文から読み取り開始します

コンストラクタ

  たSequenceInputStream(のInputStream S1、S2のInputStream)
  たSequenceInputStream(列挙<?拡張したInputStream> e)に

例:

1      // 複合1.TXT、2.txt、ファイルに3.txtファイル
2      / * 
3       *よう、ベクトル集合が可能であるが、非効率的な
 4       * / 
5      / *ベクトル<FileInputStreamの> =ベクトル新しい新しいベクトル<のFileInputStream> ();
 6      vector.add(新しい新規のFileInputStream( "1.TXT" ));
 7      vector.add(新しい新規のFileInputStream( "2.txt" ));
 8      vector.add(新しい新規のFileInputStream(」3。 .TXT " ));
 9      列挙<FileInputStreamの> EN = vector.elements();
 10      AたSequenceInputStream SS = 新しい新AたSequenceInputStream(EN); / *
 11      
12であり、     / * 
13であり、      *第二の方法、高い捕集効率のArrayList
 14       * 収集ツールの方法を用いてCollections.enumerationのArrayListセットターンに列挙<FileInputStreamの>オブジェクトタイプ
 15       * / 
16      
17      のArrayList <FileInputStreamを> ARR = 新しい新規のArrayList <のFileInputStream> ();
 18である     
19。      arr.add(新しい新規のFileInputStream( "1.TXT" ));
 20である      arr.add(新しい新規のFileInputStream( "2.txt" ));
 21である      arr.add(新しい新 FileInputStreamを( "3.txt" ));
 22である      AたSequenceInputStream SS1 =新新たSequenceInputStream(Collections.enumeration(ARR));
 23      / * 
24       * Collections.enumeration(ARR)の原則の実現:
 25       * 
 26       * 列挙API注:このインタフェースのこのページの機能で、インターフェイスイテレータのことで重複をIS
 27       *翻訳:ザ・インタフェース機能は、インタフェースイテレータコピーされる
 28       * 
 29       *最終イテレータ<FileInputStreamのが> ITは(arr.iterator =)を、
 30       *たSequenceInputStream SS1新しい新しい=たSequenceInputStream(列挙新しい新しい<入力ストリーム>(){
 31は                 @Override
 32                  hasMoreElements(パブリックブール値){
 33は、                 
34のIS                 リターンit.hasNext();
35                  }
 36          
37                  @Override
 38                  公共のInputStreamのnextElement(){
 39                  
40                  リターンit.next()。
41                  }
 42          });
43       * / 
44      バイト []バフ= 新しい バイト [1024 ];
45      のFileOutputStreamアウト= 新しいたFileOutputStream( "4.txt" )。
46      INT LEN = 0 47      一方(=(LEN = ss1.read(バフ))! - 1 ){
 48         out.write(バフ、0 、LEN)。
49      }
 50      out.close()。
51      
52      ss1.close()。
53     

ファイルを切断:

1      公共 静的 ボイド SplitFile(ファイルファイル)がスローにIOException {
 2      //を関連する読み出しストリームファイルに
3。      FileInputStreamのFISは= 新しい新規のFileInputStream(ファイル);
 4  
。5      // 1Mのバッファを定義する
。6      バイト [] = BUF 新しい新しい バイト[ SIZE];
 7  
8。     // オブジェクトを作成
9。      AたFileOutputStream FOS = NULL ;
 10  
11。     INT LEN = 0 ;
 12である     INT = COUNT 1。;
 13は、      DIR =ファイルの新しい新ファイル( "partfiles" );
14  
15      であれば(!{dir.exists())
 16          dir.mkdirs()。
17      }
 18  
19      ながら((LEN = fis.read(BUF))= -1!){
 20の          FOS = 新しいたFileOutputStream(新しいファイル(ディレクトリ、(カウント++)+ ".part" ));
21          fos.write(BUF、0 、LEN)。
22      }
 23      fos.close()。
24      fis.close()。
25      }

 

 

おすすめ

転載: www.cnblogs.com/WarBlog/p/12141611.html