java文件输出流关闭_java.lang.IllegalStateException:已经使用输出流[关闭]

很难说出这里的要求。这个问题是模棱两可的,模糊的,不完整的,过于广泛的或修辞性的,不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开,

请访问帮助中心。

7年前关闭。

当用户单击按钮时,客户端浏览器上的windchill GUI应该在其系统上下载特定的pdf文件。我通过使用以下代码实现了这一点。

String pdfname= session.getAttribute("pdfname").toString();

String Pdfpath= session.getAttribute("pdfpath").toString();

File f =new File(Pdfpath);

Boolean flag=false;

if(f.exists())

{

BufferedInputStream filein = null;

BufferedOutputStream out2=null;

try {

File file = new File(Pdfpath);//specify the file path

byte b[] = new byte[1048576];

int len = 0;

filein = new BufferedInputStream(new FileInputStream(file));

out2=new BufferedOutputStream(response.getOutputStream());

response.setHeader("Content-Length", ""+file.length());

response.setContentType("application/pdf");

response.setHeader("Content-Disposition","attachment;filename="+pdfname);

response.setHeader("Content-Transfer-Encoding", "binary");

while ((len = filein.read(b)) > 0) {

out2.write(b, 0, len);

out.println("Your Pdf Document Is Generated Please close it");

}

filein.close();

out2.flush();

out2.close();

}

catch(Exception e)

{

out.println(e);

}

}else{

String error ="File Not Found Or File Has Bean Deleted Already";

request.setAttribute("error", error);

RequestDispatcher s = request.getRequestDispatcher("NoFile.jsp");

s.forward(request, response);

}

%>

这段代码可以正常工作并且正在下载文件,但是之后它会引发异常。以下是我的方法服务器日志

ERROR : org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/Windchill].[jsp] - Servlet.service() for servlet jsp threw exception

Thu 3/28/13 12:29:07: TP-Processor7: java.lang.IllegalStateException: Already using output stream

Thu 3/28/13 12:29:07: TP-Processor7: at wt.servlet.CompressionFilter$GzippingResponse.getWriter(CompressionFilter.java:860)

Thu 3/28/13 12:29:07: TP-Processor7: at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)

Thu 3/28/13 12:29:07: TP-Processor7: at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)

Thu 3/28/13 12:29:07: TP-Processor7: at org.apache.jasper.runtime.JspWriterImpl.flush(JspWriterImpl.java:173)

Thu 3/28/13 12:29:07: TP-Processor7: at org.apache.jasper.runtime.JspWriterImpl.close(JspWriterImpl.java:187)

Thu 3/28/13 12:29:07: TP-Processor7: at org.apache.jsp.netmarkets.jsp.gt.get_jsp._jspService(get_jsp.java:105)

Thu 3/28/13 12:29:07: TP-Processor7: at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

Thu 3/28/13 12:29:07: TP-Processor7: at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

Thu 3/28/13 12:29:07: TP-Processor7: at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)

Thu 3/28/13 12:29:07: TP-Processor7: at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)

Thu 3/28/13 12:29:07: TP-Processor7: at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)

Thu 3/28/13 12:29:07: TP-Processor7: at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

Thu 3/28/13 12:29:07: TP-Processor7: at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

Thu 3/28/13 12:29:07: TP-Processor7: at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

Thu 3/28/13 12:29:07: TP-Processor7: at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)

Thu 3/28/13 12:29:07: TP-Processor7: at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)

Thu 3/28/13 12:29:07: TP-Processor7: at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)

Thu 3/28/13 12:29:07: TP-Processor7: at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)

Thu 3/28/13 12:29:07: TP-Processor7: ......

......

谷歌上有很多关于此异常的帖子,但我无法清除我的错误。我也尝试将其添加到servlet中而不是jsp中。这也显示了相同的异常。这种方式是否适合下载文件,或者我的方式错误?我需要帮助

谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值