java如何实现 io流传输过来的文件,提示另存为弹出窗口?

 我来答
ganhuanxp
2017-06-24 · TA获得超过363个赞
知道小有建树答主
回答量:259
采纳率:0%
帮助的人:266万
展开全部
弹出窗口,我理解为浏览器弹出窗口,所以必定有后端服务器程序,这里重点说的就是服务器程序。
第一步:设置Response头部(最关键)
response.setContentType("application/octet-stream;charset=UTF-8");
// 设置弹出框提示的文件名
response.addHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));

第二步:解析输入流
// 这里的in为你的输入流
BufferedInputStream is = new BufferedInputStream(in);
// 准备缓冲区
byte[] buffer = new byte[4096];
第三步:将输入流转换为输出流
BufferedOutputStream os = new BufferedOutputStream(response.getOutputStream());
int offset = 0;
while((offset = is.read(buffer, 0, 4096) > -1) {
os.write(buffer, 0, offset)

}
第四步:关闭输入输出流
os.close();
is.close();
小万4k
2016-10-14 · 超过18用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:18.1万
展开全部
可以通过BufferedReader 流的形式进行流读取,之后通过readLine方法获取到读取的内容。
BufferedReader bre = null;
try {
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流
while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环
{
System.out.println(str);//原样输出读到的内容
};
备注: 流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Stanleyzhong
2016-12-28 · TA获得超过1088个赞
知道小有建树答主
回答量:431
采纳率:50%
帮助的人:257万
展开全部
可以通过swing技术中的JFileChooser类来实现;
方法如下:
public File getFile(){
  final JFileChooser fc = new JFileChooser();
  fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
  // JFileChooser.FILES_ONLY
  // JFileChooser.DIRECTORIES_ONLY
  int returnVal = fc.showOpenDialog(this);
  File file_choosed = fc.getSelectedFile();
  return file_choosed;
  }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d047521a
2017-02-17 · 超过12用户采纳过TA的回答
知道答主
回答量:80
采纳率:50%
帮助的人:14.4万
展开全部
private void downValid(HttpServletResponse response,NetDiskFile netDiskFile)throws Exception{
try{
if(netDiskFile!=null){
File f = new File(netDiskFile.getAttach());
//文件流的输入

BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
response.reset();
response.setCharacterEncoding("gb2312");
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition",
"attachment; filename="+this.toUtf8String(netDiskFile.getFilename())+"."+netDiskFile.getSuffix());
byte[] buf = new byte[1024];
int len = 0;
//文件流的输出
OutputStream output = response.getOutputStream();
while ((len = br.read(buf)) > 0){
output.write(buf, 0, len);
}
br.close();
output.close();

}else{
PrintWriter out=response.getWriter();
out.println("<script language='javascript'>alert(\"you only can download the file, can't do the folder!\");history.back();</script>");
}
}catch(FileNotFoundException e){
PrintWriter out=response.getWriter();
out.print("<script language='javascript'>alert('Sorry,the file could not be found');history.back();</script>");
}catch(Exception e){
PrintWriter out=response.getWriter();
out.print("<script language='javascript'>alert('while downloading,the error happens.');history.back();</script>");
}
}

手写不容易,望采纳,万分感激。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
知道小小白
2016-08-10 · TA获得超过543个赞
知道小有建树答主
回答量:909
采纳率:70%
帮助的人:307万
展开全部

web开发吗。如果是java的web开发。

response.setHeader("Content-disposition", "attachment; filename=aaa.xls");// 设定输出文件头
response.setContentType("ContentType");// 定义输出类型

注意,这里的文件名需要用iso8859-1编码

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(15)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式