2012-04-30 2 views
0

난 서블릿을 복사하는 클라이언트 PDF 파일빠른 자바 입력 출력 스트림

private boolean copyStreamToStream(InputStream in, OutputStream target) { 

    logger.info("start copy file to stream"); 
    try { 

     byte[] buffer = new byte[1024 * 8]; 
     int len = in.read(buffer); 
     while (len != -1) { 
      target.write(buffer, 0, len); 
      len = in.read(buffer); 
     } 
     in.close(); 
     target.flush(); 
     target.close(); 
     logger.info("end copy file to stream"); 

    } catch (Exception ex) { 

     logger.error("Error: ", ex); 
     return false; 
    } 
    return true; 

} 

response.getOutputStream()에 대한 디스크의 OutputStream의 PDF 파일에 대한 InputStream에서 응답 출력 스트림을 사용

문제는 PDF 파일이 큰 파일이며 클라이언트에서로드하는 데 오랜 시간이 걸립니다. 속도를 높이는 방법이 있습니까 ???

+0

BufferedInputStream을 사용하셨습니까? FileInputStream에서 가장 먼저 할 일입니다. –

+0

6 개의 질문 중 0 개가 답을 받아 들였습니다 ... 흠, 그 일을하고 싶을 수도 있습니다. – Thomas

+1

@dystroy BufferedInputStream은 기본적으로 8KB의 버퍼를 사용합니다. OP가 이미 8KB 버퍼를 사용 중입니다. –

답변

1

파일을 직접 응답 개체로 다시 전달하는 대신 다운로드하여 보냅니다.

// Set the headers. 
response.setContentType("application/x-download"); 
response.setHeader("Content-Disposition", "attachment; filename=" + filename); 

// Send the file for download. 
OutputStream out = response.getOutputStream(); 

편집 됨.

+0

'다운로드 할 파일'을 보내지 않습니다. 그냥 파일 이름을 두 번 보냅니다. – EJP

+0

@EJP 당신 말이 맞아요 - 편집본보기 – Bitmap

+0

수정 파일은 텍스트라고 가정합니다. 'InputStream'과'OutputStream'을 사용한다면 가정 할 필요가 없습니다. – EJP