HTTP リクエストのレスポンスをファイルに書き込みたい。ただし、応答全体が読み込まれるのを待たずに、応答を物理ファイルにストリーミングしたいと考えています。
実際には、ダンプからすべての文字列を返すように JHAT サーバーに要求します。そのようなオブジェクトが 70k あるため、応答が完了する前にブラウザーがハングします。それらをファイルに書き込んで、スキャンできるようにしたかったのです。
前もって感謝します、
HTTP リクエストのレスポンスをファイルに書き込みたい。ただし、応答全体が読み込まれるのを待たずに、応答を物理ファイルにストリーミングしたいと考えています。
実際には、ダンプからすべての文字列を返すように JHAT サーバーに要求します。そのようなオブジェクトが 70k あるため、応答が完了する前にブラウザーがハングします。それらをファイルに書き込んで、スキャンできるようにしたかったのです。
前もって感謝します、
HTTP ストリームから限られた量のデータを読み取り、それをファイル ストリームに書き込みます。すべてのデータが処理されるまでこれを行います。
原則を示すコード例を次に示します。この例では、I/O エラーは扱いません。一度に 1 バイトを処理するよりも高速でありながら、各反復中に RAM に取り込まれるデータの量を制限するために、8KB のバッファーを選択しました。
final URL url = new URL("http://example.com/");
final InputStream istream = url.openStream();
final OutputStream ostream = new FileOutputStream("/tmp/data.txt");
final byte[] buffer = new byte[1024*8];
while (true) {
final int len = istream.read(buffer);
if (len <= 0) {
break;
}
ostream.write(buffer, 0, len);
}