0
JavaのI/Oストリームについて混乱しています。私はInputstreamが非常に速い(ディスクからファイルを読み込むような)が、出力ストリームが非常に遅い(HTTPサーブレット応答outputstreamに書き込むような)場合があります。Javaの入力ストリームが出力ストリームより速い
ファイルサイズが非常に大きいと、最終的に私のoutputstream(ファイルの入力ストリームにパイプされます)がメモリ関連の例外をスローしてストリームを閉じますか?出力ストリームのデータがクリアされるまで、私のoutputstream writeメソッドはブロックされますか?
出力ストリームがいっぱいになる可能性はありますか?
public void pipe(InputStream is, OutputStream os) throws IOException {
int n;
byte[] buffer = new byte[1024];
while((n = is.read(buffer)) > -1) {
os.write(buffer, 0, n); // would this get blocked if outputstream is full?
}
os.close();
}
まず第一に、読書は通常書くよりも速いことは驚きではありません。そして、第二に、あなたが尋ねたいものをあなたの心に入れてください。質問のタイトルと最初の段落は、2番目の段落とコードと異なるものを尋ねているようです。 – Tom