1。从页面发一个下载文件得命令。
2。在服务端,从数据库提取数据生成文本文件的流
这里不要在服务端生成实际的文件,而应该是直接生成流
请高手赐教
11 个解决方案
#1
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();
StringInputStream saveasout = new StringInputStream (数据库得到的string);//可能类名字有误,参照java.io
byte[] line = new byte[ (int) saveasout.length()];
saveasout.read(line);
response.getOutputStream().write(line);
saveasout.close();
#2
楼上的代码应该可以工作
但是需要考虑Buffer和大数据量问题,如果数据很大的话,会OutOfMemory的
但是需要考虑Buffer和大数据量问题,如果数据很大的话,会OutOfMemory的
#3
这样没有格式呀,只是把数据写出来
现在我要从数据库中提取四个字段,用符号隔开作为一行,每一行表示一条记录。
这样可以实现吗?
现在我要从数据库中提取四个字段,用符号隔开作为一行,每一行表示一条记录。
这样可以实现吗?
#4
有了方法具体思路你自己想就行了.
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包装一下.
这样不就满足你的要求了吗???
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包装一下.
这样不就满足你的要求了吗???
#5
另一端用readline,读出每一行
#6
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都不应该保存下来
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都不应该保存下来
#7
关注+学习
#8
呵呵: ChDw(米) 说的对,我只是提示一下,说一下思路.
具体优化还要靠他自己了 :)
要用String的话,最好也要用BufferString
具体优化还要靠他自己了 :)
要用String的话,最好也要用BufferString
#9
多谢各位,我试一下
#10
路过 学习1下
to littlecong(虫子) 哈哈 好啊
to littlecong(虫子) 哈哈 好啊
#11
谢谢各位的大力支持,下面的代码调试通过
<%@ 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()+"]");
}
%>
<%@ 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()+"]");
}
%>
#1
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();
StringInputStream saveasout = new StringInputStream (数据库得到的string);//可能类名字有误,参照java.io
byte[] line = new byte[ (int) saveasout.length()];
saveasout.read(line);
response.getOutputStream().write(line);
saveasout.close();
#2
楼上的代码应该可以工作
但是需要考虑Buffer和大数据量问题,如果数据很大的话,会OutOfMemory的
但是需要考虑Buffer和大数据量问题,如果数据很大的话,会OutOfMemory的
#3
这样没有格式呀,只是把数据写出来
现在我要从数据库中提取四个字段,用符号隔开作为一行,每一行表示一条记录。
这样可以实现吗?
现在我要从数据库中提取四个字段,用符号隔开作为一行,每一行表示一条记录。
这样可以实现吗?
#4
有了方法具体思路你自己想就行了.
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包装一下.
这样不就满足你的要求了吗???
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包装一下.
这样不就满足你的要求了吗???
#5
另一端用readline,读出每一行
#6
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都不应该保存下来
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都不应该保存下来
#7
关注+学习
#8
呵呵: ChDw(米) 说的对,我只是提示一下,说一下思路.
具体优化还要靠他自己了 :)
要用String的话,最好也要用BufferString
具体优化还要靠他自己了 :)
要用String的话,最好也要用BufferString
#9
多谢各位,我试一下
#10
路过 学习1下
to littlecong(虫子) 哈哈 好啊
to littlecong(虫子) 哈哈 好啊
#11
谢谢各位的大力支持,下面的代码调试通过
<%@ 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()+"]");
}
%>
<%@ 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()+"]");
}
%>