在写下载(把数据保存在txt中打开)时出现的提示。麻烦大家帮忙想招啦,应该是遇到response.getOutputStream()这句的时候报的错,但我是清空再做的操作啊,我自己实在是找不到解决办法。我的代码如下:
if (type.equals("link4_one_loaddown")) {
File f = null;
FileInputStream fileinputstream = null;
String downloadfilepath = "/WEB-INF/download/";
String filename = "testDownload.txt";
String path= request.getRealPath("/");
String filepathname = path + downloadfilepath;
//写入文件完成
EmployeeBean empbean = new EmployeeBean(ds);
EmployeeVO emp = empbean.getEmployee(request.getParameter("id"));
//读出文件开始
try {
f = new File(filepathname, filename);
f.createNewFile();//创建文件
LoadDownBean loadbean=new LoadDownBean();
loadbean.writeFile(emp,f); //写文件的具体过程
fileinputstream = new FileInputStream(
filepathname+ filename); servletoutputstream = response.getOutputStream();
response.reset();
response.setHeader("Content-disposition",
"attachment; filename=" + filename);
response.setContentType("text/plain;charset=gb2312");
int j = 0;
int k = 0;
byte abyte0[] = new byte[1024];
while ((k = fileinputstream.read(abyte0)) != -1) {
j += k;
servletoutputstream.write(abyte0);
} } catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
servletoutputstream.close();
fileinputstream.close();
File f1 = new File(filepathname+filename);
if (f1.exists()) {
System.out.println("linnan");
f1.delete(); //删除File.txt文件
}
} catch (Exception ex1) {
ex1.printStackTrace();
}
}报错信息如下:
ERROR - Servlet.service() for servlet action threw exception
java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:596)
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:186)
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:156)
……
if (type.equals("link4_one_loaddown")) {
File f = null;
FileInputStream fileinputstream = null;
String downloadfilepath = "/WEB-INF/download/";
String filename = "testDownload.txt";
String path= request.getRealPath("/");
String filepathname = path + downloadfilepath;
//写入文件完成
EmployeeBean empbean = new EmployeeBean(ds);
EmployeeVO emp = empbean.getEmployee(request.getParameter("id"));
//读出文件开始
try {
f = new File(filepathname, filename);
f.createNewFile();//创建文件
LoadDownBean loadbean=new LoadDownBean();
loadbean.writeFile(emp,f); //写文件的具体过程
fileinputstream = new FileInputStream(
filepathname+ filename); servletoutputstream = response.getOutputStream();
response.reset();
response.setHeader("Content-disposition",
"attachment; filename=" + filename);
response.setContentType("text/plain;charset=gb2312");
int j = 0;
int k = 0;
byte abyte0[] = new byte[1024];
while ((k = fileinputstream.read(abyte0)) != -1) {
j += k;
servletoutputstream.write(abyte0);
} } catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
servletoutputstream.close();
fileinputstream.close();
File f1 = new File(filepathname+filename);
if (f1.exists()) {
System.out.println("linnan");
f1.delete(); //删除File.txt文件
}
} catch (Exception ex1) {
ex1.printStackTrace();
}
}报错信息如下:
ERROR - Servlet.service() for servlet action threw exception
java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:596)
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:186)
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:156)
……
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货