使用Java从服务器下载大文件时出错

使用Java从服务器下载大文件时出错,java,file,file-handling,Java,File,File Handling,我不熟悉Java中的文件处理。我已经写了一个代码,应该从服务器下载一个文件。 该代码适用于大小不超过70MB的文件。如果下载了大文件,则会引发异常 SRVE0260E:服务器无法使用为应用程序指定的错误页来处理下面打印的原始异常 原始例外情况: 错误消息:java.lang.OutOfMemoryError 错误代码:500 目标Servlet:null 错误堆栈: java.lang.OutOfMemoryError “位于app.web.webcontroller.webAction.Dow

我不熟悉Java中的文件处理。我已经写了一个代码,应该从服务器下载一个文件。 该代码适用于大小不超过70MB的文件。如果下载了大文件,则会引发异常

SRVE0260E:服务器无法使用为应用程序指定的错误页来处理下面打印的原始异常

原始例外情况: 错误消息:java.lang.OutOfMemoryError 错误代码:500 目标Servlet:null 错误堆栈: java.lang.OutOfMemoryError “位于app.web.webcontroller.webAction.DownloadCsvAction.execute(DownloadCsvAction.java:49)” “位于org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:422)” “位于org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)” “位于org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)” “位于org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)” “位于javax.servlet.http.HttpServlet.service(HttpServlet.java:718)” “位于javax.servlet.http.HttpServlet.service(HttpServlet.java:831)” “位于com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1530)” “位于com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1470)” “位于com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:131)” “位于app.systemController.RequestTimerFilter.doFilter_http(RequestTimerFilter.java:73)” “位于app.systemController.RequestTimerFilter.doFilter(RequestTimerFilter.java:61)” “位于com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188)” “位于com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116)” “在com.ibm.ws.webcontainer.filter.WebAppFilterChain.\u doFilter(WebAppFilterChain.java:77)” “在com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:858)” “位于com.ibm.ws.webcontainer.servlet.ServletWrapper.HandlerRequest(ServletWrapper.java:824)” “位于com.ibm.ws.webcontainer.servlet.ServletWrapper.HandlerRequest(ServletWrapper.java:458)” “位于com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.HandlerRequest(ServletWrapperImpl.java:175)” “位于com.ibm.ws.webcontainer.servlet.CacheServletWrapper.HandlerRequest(CacheServletWrapper.java:91)” “位于com.ibm.ws.webcontainer.webcontainer.handleRequest(webcontainer.java:862)” “位于com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1583)” “位于com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:178)” “位于com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:455)” “位于com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:384)” “位于com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83)” “在com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted上(AioReadCompletionListener.java:165)” “位于com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)” “位于com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)” “位于com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)” “位于com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)” “位于com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)” “位于com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)” “位于com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1550)”

错误页异常: 错误消息:java.lang.IllegalStateException:SRVE0199E:已获得OutputStream 错误代码:0 目标Servlet:null 错误堆栈: java.lang.IllegalStateException:SRVE0199E:已获取OutputStream “位于com.ibm.ws.webcontainer.srt.SRTServletResponse.getWriter(SRTServletResponse.java:719)” “位于org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:187)” “位于org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:175)” “位于org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:262)” “位于org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:177)” “位于org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:137)” “在com.ibm.\u jsp.\u Error500.\u jsp服务(\u Error500.java:177)” “位于com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:98)” “位于javax.servlet.http.HttpServlet.service(HttpServlet.java:831)” “位于com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1530)” “位于com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1470)” “位于com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:104)” “在com.ibm.ws.webcontainer.filter.WebAppFilterChain.\u doFilter(WebAppFilterChain.java:77)” “在com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:858)” “位于com.ibm.ws.webcontainer.servlet.ServletWrapper.HandlerRequest(ServletWrapper.java:824)” “位于com.ibm.ws.webcontainer.servlet.ServletWrapper.HandlerRequest(ServletWrapper.java:458)” “位于com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.HandlerRequest(ServletWrapperImpl.java:175)” “位于com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.HandlerRequest(GenericServletWrapper.java:121)” “位于com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.HandlerRequest(AbstractJSPExtensionServletWrapper.java:239)” “在com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDi
response.setHeader("Content-Disposition","attachment;filename=\""+fileName+"\"");
        response.setContentType("application/octet-stream");
         File downloadFile = new File(fileUrl\fileName);
         OutputStream out = response.getOutputStream();
         FileInputStream in = new FileInputStream(downloadFile); 
         int size=(int)downloadFile.length()+1;
         byte[] buffer = new byte[size];
         int length;
         while ((length = in.read(buffer)) != -1){
            out.write(buffer, 0, length);
         }
         in.close();
         out.flush();
byte[] buffer = new byte[64 * 1024];
int size=(int)downloadFile.length()+1;
byte[] buffer = new byte[size];