3

のjavadocを書いていました:

/**
 * ...Buffers the input stream so do not pass in a BufferedInputStream ...
 */
public static void meth(InputStream is) throws IOException {
    BufferedInputStream bis = new BufferedInputStream(is,
            INPUT_STREAM_BUFFER_SIZE);
    // rest omitted
}

しかし、バッファリングされた入力ストリームを に渡すのは本当に問題なのでしょうか? したがって、この :

InputStream is = new BufferedInputStream(new FileInputStream("C:/file"), SIZE);
meth(is);

にバッファリングisしますかbis、またはJavaisはすでにバッファリングされて設定されていることを検出しbis = isますか? はいの場合、バッファサイズが異なると違いが生じますか? いいえの場合、なぜですか?
NB:私は入力ストリームについて話していますが、実際には出力ストリームについても質問が有効です

4

3 に答える 3

1

ストリームを 2 回バッファリングすると、1 回だけバッファリングした場合よりも多くのメモリが使用され、遅くなりますが、それでも機能します。

ストリームがバッファリングを行うことを文書化することは、ユーザーが自分でバッファリングを行う必要がないことを理解できるようにする価値があります。

一般に、この種の誤用を積極的に防止するよりも、思いとどまらせることが最善です。

于 2013-09-28T13:20:09.013 に答える