理由がありま使用BufferedReader上InputStreamReader読み込み時にすべての文字?
-
09-06-2019 - |
質問
私は現在、以下の機能を簡単にHTTPを取得します。
public static String download(String url) throws java.io.IOException {
java.io.InputStream s = null;
java.io.InputStreamReader r = null;
//java.io.BufferedReader b = null;
StringBuilder content = new StringBuilder();
try {
s = (java.io.InputStream)new URL(url).getContent();
r = new java.io.InputStreamReader(s);
//b = new java.io.BufferedReader(r);
char[] buffer = new char[4*1024];
int n = 0;
while (n >= 0) {
n = r.read(buffer, 0, buffer.length);
if (n > 0) {
content.append(buffer, 0, n);
}
}
}
finally {
//if (b != null) b.close();
if (r != null) r.close();
if (s != null) s.close();
}
return content.toString();
}
思い当たらない理由をご利用 BufferedReader
もちろん、今ダウンロードでシーケンスです。私に考えてありませんの BufferedReader
かるでしょうか?
解決
この場合において確認することができま使用するbyte配列をバッファリングとなるストリームバッファ).
例外はありますが。一覧バッファの出力この時間はサーブレットAPIに含まれています。データから基礎ストリームまで flush() と呼ばれ、き出力バッファがダンプカーのバッファエラーが発生した場合には、書きエラーのページです。だがバッファ入力の場合に必要なストリームをリセットしたrereading用 mark(int) や reset().例えば、もしかしたらい検査を行ファイルのヘッダーを決めるコンテンツハンドラのストリームです。
関係ないと思うべきストリームの書き換える。このパターンを作るだけ資源の漏えい:
InputStream stream = new FileInputStream("in");
try { //no operations between open stream and try block
//work
} finally { //do nothing but close this one stream in the finally
stream.close();
}
の場合は開を複数のストリームに、巣のみ/ついにブロックとなります。
もう一つはやってはという前提で返されるコンテンツは符号化におVMのデフォルトの文字セットが可能で適切に応じて、使用の場合)。
他のヒント
で内容に間違いがないか確認し、ご利用の場合はBufferedReader読書のHTTPコンテンツおよびヘッダをしようと思うでしょうInputStreamReaderできますのでバイトを読みのためにバイトになります。
BufferedReaderこのシナリオでは時には奇妙なもの---escpeciallyで読HTTPポスト、ヘッダができませんの読み込み後のデータをご利用の場合InputStreamReaderを読むことができコンテンツの長さを読んで多くのバイト...
ソッドを呼び出すたびに一つの InputStreamReader's read()メソッドが一つ以上のバイトから読み取られる裏付けのバイト入力ストリームです。を効率的に実施可能とするには変換バイトの文字、バイトが読み込まれる前から、基本となるストリームよりご満足いただける現在の読み込み動作します。
私の腸管からだを行うバッファのバイト配列での重複利用はBufferedReader.