我々押す関数は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]のために取ります。
可視バッファサイズと過ごした時間は法律ではありませんが、それが起こったのか、このですか?