社区
Java SE
帖子详情
I/O操作的问题,文件下载,急!!!!!!!!!!!!
senhai
2007-08-27 09:25:26
小第有这样一个问题要请教大家。
现在我要从服务器上,写一个流,把数据读到用户的本地以excel形式显示出来。
我用sql查出了数据,写在一个Stringbuffer里面了。
现在想生成一个CSV文件,现在问题是,生成CSV文件,然后怎么才能在客户端下载,这块怎么写?是用FileOutputStream还是用什么别的来做这个操作呢?
...全文
196
6
打赏
收藏
I/O操作的问题,文件下载,急!!!!!!!!!!!!
小第有这样一个问题要请教大家。 现在我要从服务器上,写一个流,把数据读到用户的本地以excel形式显示出来。 我用sql查出了数据,写在一个Stringbuffer里面了。 现在想生成一个CSV文件,现在问题是,生成CSV文件,然后怎么才能在客户端下载,这块怎么写?是用FileOutputStream还是用什么别的来做这个操作呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lizhimin0310
2008-12-17
打赏
举报
回复
mark
senhai
2007-08-27
打赏
举报
回复
谢谢各位,结贴了!
senhai
2007-08-27
打赏
举报
回复
刚刚自己试了一下,这样就可以搞定了!
StringBuffer usersb = new StringBuffer();
String username = request.getParameter("username");
String opyear = request.getParameter("opyear");
DBManager dm = new DBManager();
list = dm.searchFromDB(username, opyear);
for (int i = 0; i < list.size(); i++) {
md = (Model) list.get(i);
String name = md.getUser_name();
usersb.append(md.getUser_name());
usersb.append(",");
usersb.append(md.getUser_id());
usersb.append(",");
usersb.append(md.getAction_time());
usersb.append(",");
usersb.append(md.getBuy_price());
usersb.append(",");
usersb.append(md.getSell_acount());
usersb.append(",");
usersb.append(md.getSell_price());
usersb.append(",");
usersb.append(md.getDeal_amount());
usersb.append(",");
usersb.append(md.getRelate_tax());
usersb.append(",");
usersb.append(md.getOption_income());
usersb.append("\r\n");
// fos.write(arg0);
System.out.println("######################="+name);
}
FileOutputStream fos = new FileOutputStream("a.csv");
fos.write(usersb.toString().getBytes());
fos.close();
System.out.println("!!!!!!!!!!!!!!!!!!!!=" + fos);
FileInputStream fileIn = new FileInputStream("a.csv");
response.reset();
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition",
"attachment;filename=a.csv");
response.setContentLength(fileIn.available());
ServletOutputStream out = response.getOutputStream();
byte buffer[] = new byte[1024];
while (fileIn.read(buffer) != -1) {
out.write(buffer);
}
masse
2007-08-27
打赏
举报
回复
就设置一下contentType就行了,
masse
2007-08-27
打赏
举报
回复
晕死,
设置contentType为"application/octet-stream";
littcricket
2007-08-27
打赏
举报
回复
写一个servlet,像客户端直接response出数据,代码示例如下:
public int downFile(HttpServletResponse response, String filePathName) {
String saveUploadFilePath="d:";
if (filePathName.indexOf("/") != 1 && filePathName.indexOf("\\") != 1) {
filePathName = "/" + filePathName;
}
java.io.File downfile = new java.io.File(fileName);
InputStream is = null;
try {
if (downfile.exists()) {
is = new FileInputStream(downfile);
}
else {
throw new IOException("文件不存在1!");
}
}
catch (IOException ie) {
System.out.println("文件不存在2!" + saveUploadFilePath + ie.getMessage());
return -100;
}
long fileLeng = 0;
try {
fileLeng = is.available();
}
catch (IOException ex) {
System.out.println("获得文件长度失败!" + ex.getMessage());
return 1;
}
if (fileLeng >= 0) {
// 向客户端发出附件输出流
String filename = filePathName.substring(filePathName.lastIndexOf("/") + 1,filePathName.length());
//String filename="maillist.txt";
response.setContentType("application/x-msdownload");
try {
response.setHeader("Content-Disposition", "attachment;filename=" + "maillist.txt");
OutputStream os = response.getOutputStream();
int byteSum = 0;
int bytesRead = 0;
byte[] buffer = new byte[10 * 1024];
while ( (bytesRead = is.read(buffer)) != -1) {
byteSum += bytesRead;
os.write(buffer, 0, bytesRead);
}
is.close();
is = null;
}
catch (Exception ex) {
System.out.println("向客户端发出附件输出流出错!" + ex.getMessage());
return 1;
}
}
return 0;
}
I/O结构概述
同学们,今天我们从硬件聊到软件,把I/O结构掰开揉碎讲了一遍。从CPU怎么连设备,到数据怎么传,再到
操作
系统怎么管,脉络是不是清楚多了?这些知识就像你家里的水电系统,平时看不见,但少不了它。有什么不明白的,随时问我,咱们下节课见!这篇博客逻辑清晰,内容丰富,还加上了流程图和例子,绝对能帮你复习得妥妥的!有什么想调整的吗?
linux怎么打开q7后缀的文件,关于linux下的文件
操作
!
急
!!!!!
下面我们学习一个实例,这个实例用来拷贝文件. 4 N- s: ?, ^5 S$ s/ ^' E; r7 M7 j( I3 w\#include; f9 f# q8 S8 Y( v5 B#include* \# b, A$ Xv: |) X6 D#include 1 s/ ^0 \. e6 {#include * F! g) o" J! b5 Z! A0 V#include % F# l) ...
浅谈nginx的I/O模型和特性功能
引言: 只要功夫深,铁杵磨成针!!! 如何理解nginx,首先要放松心态,其实很好理解,只要记住I/O模型中原理图即可。
《Java I/O 到底有多慢?一文看懂 BIO、NIO、AIO 差异与选型》
BIO:简单但效率低,适合低并发场景NIO:高性能之选,但API复杂AIO:真正的异步,但生态不完善协程:Project Loom将带来更轻量的线程更智能的调度:自适应选择I/O策略硬件加速:如DPDK提升网络性能记住,没有最好的I/O模型,只有最适合的!并发规模业务特点团队能力运维成本希望这篇长文能帮你彻底理解Java I/O模型!如果有
问题
,欢迎留言讨论~ 😊🎉👨💻。
ABB机器人的系统IO功能详解
ABB机器人的系统I/O功能可以指定具体的系统输入输出项,将I/O信号与机器人系统的一些特殊功能相关联,从而使信号实现某些特殊功能。使得我们不需要通过示教器或者其它硬件就可以对机器人进行某种控制和监控机器人系统的状态。比如系统输入中的Start可用于机器人的启动控制,系统输出中的CycleOn可用机器人是否正在运行的监控。那么这一次我们就来一起看一下ABB机器人中常用的System I/O的功能。...
Java SE
62,628
社区成员
307,259
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章