java.lang.OutOfMemoryError: Java heap space

public  static  void  download(String path, HttpServletResponse response)  throws  Exception {   
     try  {   
             File file =  new  File(path);   
               if  (file.exists()) {   
                  String filename = file.getName();   
                  InputStream fis =  new  BufferedInputStream( new  FileInputStream( file));   
                   response.reset();   
                   response.setContentType( "application/x-download" );
                   response.addHeader( "Content-Disposition" , "attachment;filename=" new  String(filename.getBytes(), "iso-8859-1" ));
                   response.addHeader( "Content-Length" ""  + file.length());   
                  OutputStream toClient =  new  BufferedOutputStream(response.getOutputStream());   
                 response.setContentType( "application/octet-stream" );  
             
                   byte [] buffer =  new  byte [ 1024  1024  4 ];   
                   int  i = - 1 ;   
                   while  ((i = fis.read(buffer)) != - 1 ) {   
                       toClient.write(buffer,  0 , i);  
                      
                   }   
                   fis.close();   
                   toClient.flush();   
                   toClient.close();   
                   try  {
              response.wait();
             catch  (InterruptedException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
             }  
               else  {   
                  PrintWriter out = response.getWriter();   
                  out.print( "<script>" );   
                  out.print( "alert(\"not find the file\")" );   
                  out.print( "</script>" );   
               }   
           catch  (IOException ex) {   
              PrintWriter out = response.getWriter();   
                  out.print( "<script>" );   
                  out.print( "alert(\"not find the file\")" );   
                  out.print( "</script>" );   
           }  
 
注意:以下写法是一次读取大文件会内存溢出,参考上面正确代码
byte [] buffer =  new  byte [fis.available()];
fis.read(buffer);
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值