0

最近、java.io パッケージをよく調べていて、InputStream と OutputStream 内の抽象クラスが実行する正確なプロセスをどこで見つけられるか疑問に思っていました。

InputStream.read()少なくともソース コードによると、コア メソッドはすべて抽象的であるため (たとえばと) 、私は目がくらみますOutputStream.write(int b)。私が特に懸念しているのは close メソッドです。その javadoc では、何もしないと明示的に書かれています。

この入力ストリームを閉じ、ストリームに関連付けられているシステム リソースをすべて解放します。

closeメソッドInputStreamは何もしません。

入力ストリームは明らかに出力ストリームの読み取り中に書き込みをclose()行い、間違いなくフラッシュとリソースの解放を行う必要があります。

誰か説明してくれませんか?

4

1 に答える 1

1

これらのクラスは抽象化されているため、簡単に拡張でき、実装クラスはデコレーター パターンを使用できます (ここに示すように)。デコレーター パターンを使用すると、実装者クラスは実行時に動的な機能を追加できます。例: をInputStream使用してファイルを読み取ることができ、 を使用FileInputStreamしてシリアル化されたオブジェクトを読み取ることができる がありますObjectInputStream。これを達成する方法は?

ObjectInputStream ois = new ObjectInputStream(
    new FileInputStream(new File("/path/to/file.dat"));
于 2013-04-30T04:31:21.687 に答える