-1

次のようにコンストラクターを使用してストリームをチェーンできる方法があることを知っています。

BufferedReader bf=new BufferedReader(new InputStreamReader(io.openStream()));

しかし、そうする別の方法はありますか?

SetSink/SetProcess();

多分?

ありがとう。

4

2 に答える 2

0

BufferedReader クラスの javadoc を見ると、それを構築する唯一の方法は、コンストラクターでリーダーを渡すことです。

コンストラクタを使用しない理由はありますか?

于 2013-01-25T09:12:49.330 に答える
0

ラップするものがないとラップされたストリームを使用できないため、答えは

a) いいえ、できません。

b) したくないでしょう。

理由の 1 つは、非常に長いチェーンを構築したため、新しいものを構築するのではなく、最後にシンク ストリームを変更したいだけである可能性があります。

この場合、次のような中間変数を使用できます

InputStream in = new FileInputStream(filename);
if (filename.endsWith(".gz"))
    in = new GZIPInputStream(in);
in = new BufferedInputStream(in);
if (objectStream)
   return new ObjectInputStream(in);
return DataInputStream(in);
于 2013-01-25T09:11:03.067 に答える