首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

JAVA导出txt资料出错

2013-06-26 
JAVA导出txt文件出错?本帖最后由 zhxc87 于 2013-05-31 00:03:10 编辑我的代码:String txt abc.getstr(n

JAVA导出txt文件出错?
本帖最后由 zhxc87 于 2013-05-31 00:03:10 编辑 我的代码:
String txt = abc.getstr(no);
response.setHeader("Content-Disposition", "attachment; filename=10000"+today+".txt");  
response.setHeader("Content-Type ", "application/octet-stream");                
ServletOutputStream servletOS = response.getOutputStream();             
IOUtils.write(txt, servletOS);           
servletOS.flush();
public static String getstr(String no)
{
    StringBuffer strb = new StringBuffer();
    String sql = " select a1,a2,a3,a4from tablewhere no= '"+ no+ "'";
    try
    {
         DBAccess dbAgent = new DBAccess();
         dbAgent.setConnection("ora");
 dbAgent.connect();
 Connection conn = dbAgent.getConnection();
 Statement st = conn.createStatement();
 ResultSet rs = st.executeQuery(sql);
 while (rs.next())
{
      String a1 = rs.getString("a1");
      String a2= rs.getString("a2");
      String a3= rs.getString("a3");
      String a4= rs.getString("a4");
      strb.append(a1);
      strb.append(" ");
      strb.append(a2);
      strb.append(" ");
      strb.append(a3);
      strb.append(" ");
      strb.append(a4);
      strb.append("\r\n");
      Process ps;
try
{
        ps = Runtime.getRuntime().exec(
"/home/tomcat/bin/11 " + a1+ " "+ a2+ "");
BufferedReader br = new BufferedReader(
new InputStreamReader(ps.getInputStream()));
StringBuffer sb = new StringBuffer();
String line;
while ((line = br.readLine()) != null)
{
sb.append(line).append("");
}
String result = sb.toString();
if(result.length()==16)
{
try
{
String ret = update(dbAgent,a1,result);
}
catch (Exception e)
{
e.printStackTrace();
}
}
br.close();
ps.destroy();
ps = null;
}
catch (IOException e)
{
e.printStackTrace();
}
}
rs.close();
st.close();
conn.close();
}
catch (SQLException e)
{
       e.printStackTrace();
}
return strb.toString();
}
我在导出生成strb的时候,需要去执行Linux上的一个脚本,将返回的值update到数据库里,然后再进行导出
现在的问题是我执行的导出数据当有5000条的时候,速度慢但是能全部导出;当数据记录达到10000条的时候,导出的txt里的数据就不完整,只有很少的几条;在tomcat日志里报错,显示conn is closed;
谁能帮忙看下是什么地方出现了问题?非常感谢!

Java stringbuffer
[解决办法]
标记一下。
按照你的介绍那样就是流溢出了。不过我真的没遇到过这样的情况。
只是见一下楼主可以尝试把数据打到excel里。
[解决办法]
conn is closed
感觉像是数据库连接被关闭了。
是不是达到最大访问次数了?
[解决办法]
改写一下getStr 方法,直接写入到txt中,传输的时候还要读取str内容转成字节流,然后传输。不如直接读取这个txt然后传输。这样可以在txt中查看数据是否丢失。
写入数据和传输部分,这个功能可以做成通用的。写成多个小方法,多传几个参数就差不多能完成了。
[解决办法]
conn is closed 是数据库连接中断。可能是数据连接池都被占用了,可能是连接没有关闭。
用try ,catch,finally来确保关闭。

我很奇怪为什么不使用框架。

热点排行