2

HTTP リクエストのレスポンスをファイルに書き込みたい。ただし、応答全体が読み込まれるのを待たずに、応答を物理ファイルにストリーミングしたいと考えています。

実際には、ダンプからすべての文字列を返すように JHAT サーバーに要求します。そのようなオブジェクトが 70k あるため、応答が完了する前にブラウザーがハングします。それらをファイルに書き込んで、スキャンできるようにしたかったのです。

前もって感謝します、

4

1 に答える 1

5

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);
}
于 2012-07-29T16:23:50.983 に答える