我是在log日志下载的时候出现的错误,查了之后发现是文件过大造成内存溢出,因而下载出错。

报错:java.lang.OutOfMemoryError: Java heap space

正确代码:

@RequestMapping("/download") 
  public void download (HttpServletResponse response,@Param("url")String url) throws IOException{ 
	  String path = request.getSession().getServletContext().getRealPath("vod"+File.separator+"log"+File.separator+url);  
	  try {    
          File file = new File(path);    
            if (file.exists()) {    
               String filename = file.getName();    
               InputStream fis = new BufferedInputStream(new FileInputStream( file));   //用BufferedInputStream读取文件 
                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];    
                int i = -1;    
                while ((i = fis.read(buffer)) != -1) {   //不能一次性读完,大文件会内存溢出(不能直接fis.read(buffer);) 
                    toClient.write(buffer, 0, i);   
                     
                }    
                fis.close();    
                toClient.flush();    
                toClient.close();   
            } 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>");    
        }    
  } 



发布评论

分享到:

IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

linux 下查看有当前文件夹有多少个文件详解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。