バッファフローの使用
2422 ワード
昨日の記事では、IOストリームについて全体的に概説しましたが、今日はその中のバッファ(BufferedInputStream(バッファ読み込みストリーム)、BufferedOutputStream(バッファ読み込みストリーム))についてお話しします.
コードを書く前に、InputStreamがあるのになぜBufferedInputStreamがあるのかという問題を投げ出します.ufferedInputStreamとBufferedOutputStreamの2つのクラスはそれぞれFilterInputStreamとFilterOutputStreamのサブクラスであり、デザイナサブクラスとして使用すると、データの読み取り/送信のたびに実際の書き込み操作が行われることを防止し、バッファの使用を表す.
バッファを持たない操作は、1バイト読むたびに1バイト書き込まれることを知る必要があります.ディスクに関連するIO操作はメモリの操作よりはるかに遅いため、バッファを持たないストリーム効率は低いです.バッファ付きストリームは、一度に多くのバイトを読むことができますが、ディスクに書き込まず、メモリに先に入れます.バッファサイズが揃うと一度にディスクに書き込む方式で、ディスクの操作回数を減らすことができ、速度が大幅に向上します.
同時にバッファ機能を実現しているだけに、BufferedOutputStreamを使用してデータを書き終えた後、flush()メソッドまたはclose()メソッドを呼び出し、バッファ内のデータを強制的に書き出すことに注意してください.データが書けない場合があります.これと同様にBufferedReaderとBufferedWriterの2つのクラスもあります.
BufferedInputStreamとBufferedOutputStreamクラスは、バッファ機能を実現した入力ストリーム/出力ストリームです.バッファ付き入出力ストリームを使用すると、効率が高く、速度が速くなります.
}
使用方法はFileInputStremとFileOutputStreamとほぼ一致しています.
}
以上は私达の今日言った内容で、もしみんなはまたもっと多くの知识の点を闻きたいならば、下でコメントすることを歓迎して、あるいは私のQQ群に参加して私と検讨してみます(850353792)
————————————————————————————
コードを書く前に、InputStreamがあるのになぜBufferedInputStreamがあるのかという問題を投げ出します.ufferedInputStreamとBufferedOutputStreamの2つのクラスはそれぞれFilterInputStreamとFilterOutputStreamのサブクラスであり、デザイナサブクラスとして使用すると、データの読み取り/送信のたびに実際の書き込み操作が行われることを防止し、バッファの使用を表す.
バッファを持たない操作は、1バイト読むたびに1バイト書き込まれることを知る必要があります.ディスクに関連するIO操作はメモリの操作よりはるかに遅いため、バッファを持たないストリーム効率は低いです.バッファ付きストリームは、一度に多くのバイトを読むことができますが、ディスクに書き込まず、メモリに先に入れます.バッファサイズが揃うと一度にディスクに書き込む方式で、ディスクの操作回数を減らすことができ、速度が大幅に向上します.
同時にバッファ機能を実現しているだけに、BufferedOutputStreamを使用してデータを書き終えた後、flush()メソッドまたはclose()メソッドを呼び出し、バッファ内のデータを強制的に書き出すことに注意してください.データが書けない場合があります.これと同様にBufferedReaderとBufferedWriterの2つのクラスもあります.
ここでは、本文の冒頭で提起された質問に答えることができます。
BufferedInputStreamとBufferedOutputStreamクラスは、バッファ機能を実現した入力ストリーム/出力ストリームです.バッファ付き入出力ストリームを使用すると、効率が高く、速度が速くなります.
インスタンスの使用
public void test() {
try {
/**
* BufferedInputStream, 10
* buffer.txt
* zxcvbnmlkj
*/
InputStream in = new BufferedInputStream(new FileInputStream(new File("buff.txt")), 10);
/* 5 */
byte [] tmp = new byte[5];
in.read(tmp, 0, 5);
System.out.println(" 5 : " + new String(tmp));
/* */
in.mark(6);
/* 5 */
in.read(tmp, 0, 5);
System.out.println(" 6 10 : " + new String(tmp));
/*reset*/
in.reset();
System.out.printf("reset : %c" , in.read());
} catch (Exception e) {
e.printStackTrace();
}
}
使用方法はFileInputStremとFileOutputStreamとほぼ一致しています.
public class TestBufferedString {
public static void main(String[] args) throws Exception {
//
BufferedInputStream in = new BufferedInputStream(new FileInputStream("G:\\test.jpg"));
File file = new File("D:\\test.jpg");
if (file != null) {
file.createNewFile();
}
//
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file));
byte[] bb = new byte[1024];//
int n;//
while ((n = in.read(bb)) != -1) {
out.write(bb, 0, n);//
}
out.close();//
in.close();
}
}
以上は私达の今日言った内容で、もしみんなはまたもっと多くの知识の点を闻きたいならば、下でコメントすることを歓迎して、あるいは私のQQ群に参加して私と検讨してみます(850353792)