2012-07-29 2 views
2

HTTP 요청에 대한 응답을 파일에 쓰고 싶습니다. 그러나 전체 응답이로드 될 때까지 기다리지 않고 실제 파일에 응답을 스트리밍하려고합니다.Java에서 HTTP 응답 스트림

실제로 모든 덤프 문자열을 반환하기 위해 JHAT 서버에 요청할 것입니다. 70k 개체가 있기 때문에 응답이 완료되기 전에 브라우저가 멈추고 스캔 할 수 있도록 파일에 쓰기를 원했습니다. 사전에

덕분에,

답변

2

는 HTTP 스트림에서 제한된 양의 데이터를 읽고 파일 스트림에 씁니다. 모든 데이터가 처리 될 때까지이 작업을 수행하십시오.

다음은 원리를 보여주는 코드 예입니다. 이 예제에서는 어떤 I/O 오류도 다루지 않습니다. 한 번에 한 바이트 씩 처리하는 것보다 빠른 8KB 버퍼를 선택했으나 각 반복 동안 RAM으로 가져온 데이터의 양을 여전히 제한했습니다.

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); 
}