response.setHeader("content-disposition", "attachment;filename="+projectName+".egi");
   StringInputStream saveasout = new StringInputStream (数据库得到的string);//可能类名字有误,参照java.io
                         byte[] line = new byte[ (int) saveasout.length()];
                         saveasout.read(line);
                         response.getOutputStream().write(line);
                         saveasout.close();

解决方案 »

  1.   

    楼上的代码应该可以工作
    但是需要考虑Buffer和大数据量问题,如果数据很大的话,会OutOfMemory的
      

  2.   

    有了方法具体思路你自己想就行了.
    String outString = "";
    while(rs.next())
    {
      String str1 = re.getString(1);
    String str2 = re.getString(2);  
    String str3 = re.getString(3);
    String str4 = re.getString(4);
    outString = str1 +"自己定义的分割符号"+ str2 +"自己定义的分割符号"+ str3 +"自己定义的分割符号"+ str4+"\n" ;
    }   StringInputStream saveasout = new StringInputStream (outString );//
    建议再用BufferStream包装一下.
    这样不就满足你的要求了吗???
      

  3.   

    String outString = "";
    while(rs.next())
    {
      String str1 = re.getString(1);
    String str2 = re.getString(2);  
    String str3 = re.getString(3);
    String str4 = re.getString(4);
    outString = str1 +"自己定义的分割符号"+ str2 +"自己定义的分割符号"+ str3 +"自己定义的分割符号"+ str4+"\n" ;
    }你这样的速度非常非常的慢的,占用内存数是未知的,
    当然不应该保存到String中,应该直接开始out.println(str1 +"自己定义的分割符号"+ str2 +"自己定义的分割符号"+ str3 +"自己定义的分割符号"+ str4);甚至str1,str2都不应该保存下来
      

  4.   

    呵呵: ChDw(米) 说的对,我只是提示一下,说一下思路.
    具体优化还要靠他自己了 :)
    要用String的话,最好也要用BufferString
      

  5.   

    路过 学习1下 
    to  littlecong(虫子) 哈哈 好啊
      

  6.   

    谢谢各位的大力支持,下面的代码调试通过
    <%@ page import="java.util.*," %>
    <%@ page import="java.io.*" %>
    <%
      String filetype = "txt";
      String filename = "lifxue";
      if (filetype.length()==0)
        filename=filename;
      else
      filename=filename+"."+filetype;
      try
      {
      String strtext = "lifxue,lifxue,lifxue,lifxue\r\nlifxue,lifxue,lifxue2,lifxue2\r\n";   response.setContentType("application/x-msdownload");
      response.setHeader("Content-disposition","attachment;filename="+filename);   StringBufferInputStream saveasout = new StringBufferInputStream (strtext );
      byte[] line = new byte[ (int) saveasout.available()];
          saveasout.read(line);
      response.setHeader("Content-Length",String.valueOf(line.length));
      javax.servlet.ServletOutputStream servletOut=response.getOutputStream();
        servletOut.write(line);
      servletOut.close();
          //saveasout.close();
    }
      catch (Throwable e)
    {
    System.out.print("\n下载文件["+filename+"]过程中出现错误:["+e.toString()+"]");
    }
    %>