12 IOストリーム(9) - 装飾流れにBufferedInputStream /のOutputStream

我々押す関数はIOノードの流れと処理の流れに分けることができます

ノードストリーム:読み取りとデータ・ソースまたは宛先から直接データを書き込むことができます

フロー(流れ装飾)処理:直接データソースまたは宛先に接続されていないが、他のストリームにカプセル化(ストリームノードを含んでいなければなりません)。主な目的は、操作を簡素化し、パフォーマンスを向上させることです。

バッファされたストリームを導入しました

我々は、送信データへのストリーミングノードを使用すると、データ送信ノードの単一ストリームが少なすぎる、ハードディスクの読み出しおよび全体的な速度になり、頻繁に書き込みは、ちょうどアリのように、高いものではありません。

その後、我々は、プロセスストリームバッファストリームに導入された、トラックのように、より多くのデータを単一のトランスポートを移動するようになった、より少ないハードディスクアクセス速度の数が改善されました。

コピーファイルの例

600メートルの流れを導入することなく、ファイルのコピーをバッファリングし、それはかかる時間を計算し、このバッファストリームのサイズは、ノード1024Bです

輸入java.io. *; 
パブリッククラスIOTest01 
{ 
	パブリック静的無効メイン(文字列[] args)
	{ 
		//文件源
		列src = "1.rar"。
		文字列DEST = "1_cp.rar"。
		//计算コピー花费的时间
		長いL1 =にSystem.currentTimeMillis(); 
		コピー(SRC、DEST)。
		長いL2 =にSystem.currentTimeMillis(); 
		長い時間= L2-L1; 
		System.out.println(時間); 
	} 

	パブリック静的ボイドコピー(文字列srcPath、列DESTPATH){ 
		//选择流
		//操作
		の試み(入力ストリームである=新規のFileInputStream(srcPath)
			のOutputStream OS =新しいたFileOutputStream(DESTPATH)){ 
			バイト[]フラッシュ=新しいバイト[1024 ]; 
			int型のlen = -1;
			しばらく((LEN = is.read(フラッシュ))= - !1){//读入 
				os.write(フラッシュ、0、LEN) ; // 書き込み
			} 
			os.flush(); //リフレッシュ
		}キャッチ( EのIOException){ 
			e.printStackTrace(); 
		} 
	} 
	
}

  

出力時間:

バッファされたストリームの導入後

 

質問をします

直接、あなたは(600メガバイトのファイル)を参照して速度を向上させることができ、バイトストリームのプールサイズを変更するために意図されています:

バッファー・プールがある場合には、時間バイト[* 1000年1024]のために取ります。

 

 バッファー・プールがある場合には、時間バイト[1024×100]のために取ります。

  バッファー・プールがある場合には、時間バイト[1024 * 50]のために取ります。

  バッファー・プールがある場合には、時間バイト[1024 * 20]のために取ります。

  バッファー・プールがある場合には、時間バイト[* 8 1024]のために取ります。

 

 可視バッファサイズと過ごした時間は法律ではありませんが、それが起こったのか、このですか?

おすすめ

転載: www.cnblogs.com/Scorpicat/p/11921536.html