java下载文件,文件名字是对的,但是文件大小为0 在线急!~!!!

yaoyao1637079003 2017-06-21 03:25:12
for(FTPFile ff:files){
logger.debug("文件名称:"+ff.getName());
if(ff.getName().equals(param.getFileName())){
File localFile = new File(param.getLocalPath()+"//"+ff.getName());
FileOutputStream fos = new FileOutputStream(localFile);
String fileName = param.getRemotePath() + ff.getName();
logger.debug("fileName:"+fileName);
fos.flush();
ftpClient.retrieveFile(new String(fileName.getBytes("GB2312"),"ISO-8859-1"), fos);
fos.close();
succes=true;
break;
}else{
succes=false;
}
}

我这段代码出错在哪里? 为什么我下载的文件大小为0 文件没有后缀 只有文件名
...全文
981 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianfang 2017-06-28
  • 打赏
  • 举报
回复
为什么不把文件全路径名称传给retrieveFile 而要传输一个fos 下载成功后,本地文件移动,只需move方法就可以实现,何必再读取/写入?
yaoyao1637079003 2017-06-27
  • 打赏
  • 举报
回复
大神,我是用的java封装好的ftpclient 不是仅仅用 流
云墨浅殇 2017-06-21
  • 打赏
  • 举报
回复
OutputStream os = null; try { filename = new String(filename.getBytes("iso-8859-1"), "UTF-8"); // String path = request.getRealPath("\\upload_file\\"+filename); String basePath = request.getSession().getServletContext() .getRealPath("/"); String uploadPath = basePath.substring(0, basePath.indexOf("crm_console")) + "upload_file/" + filename; // String uploadPath = // request.getServletContext().getRealPath("upload_file/"+filename); File file = new File(uploadPath); response.setCharacterEncoding("UTF-8"); filename = URLEncoder.encode(filename, "UTF-8"); os = response.getOutputStream(); response.reset(); response.setHeader("content-disposition", "attachment;filename=" + filename); response.setContentLength((int) file.length()); int len = 0; byte[] buffer = new byte[1024]; InputStream is = new FileInputStream(file); while ((len = is.read(buffer)) != -1) { os.write(buffer, 0, len); } is.close(); } catch (Exception e) { e.printStackTrace(); } finally { try { os.flush(); os.close(); } catch (IOException e) { } } return null; 注意红色的地方,你缺少读取文件数据的方法
云墨浅殇 2017-06-21
  • 打赏
  • 举报
回复
OutputStream os = null; try { filename = new String(filename.getBytes("iso-8859-1"), "UTF-8"); // String path = request.getRealPath("\\upload_file\\"+filename); String basePath = request.getSession().getServletContext() .getRealPath("/"); String uploadPath = basePath.substring(0, basePath.indexOf("crm_console")) + "upload_file/" + filename; // String uploadPath = // request.getServletContext().getRealPath("upload_file/"+filename); File file = new File(uploadPath); response.setCharacterEncoding("UTF-8"); filename = URLEncoder.encode(filename, "UTF-8"); os = response.getOutputStream(); response.reset(); response.setHeader("content-disposition", "attachment;filename=" + filename); response.setContentLength((int) file.length()); int len = 0; byte[] buffer = new byte[1024]; InputStream is = new FileInputStream(file); while ((len = is.read(buffer)) != -1) { os.write(buffer, 0, len); } is.close(); } catch (Exception e) { e.printStackTrace(); } finally { try { os.flush(); os.close(); } catch (IOException e) { } } return null;
yaoyao1637079003 2017-06-21
  • 打赏
  • 举报
回复
大神 人呢 。。。。。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧