文档章节

java 使用 ftp下载文件失败的问题

悟空没了筋斗云
 悟空没了筋斗云
发布于 2015/12/01 15:46
字数 425
阅读 1312
收藏 1

随着帝都雾霾的爆表,我的脑子也跟着混沌起来。。

前几天明明ftp下载文件的功能好好的,今天突然下载不了了。。。。

遂检查了下代码:

@Override
public boolean ftpGet(String ftpPath, String fileName, String pathDownload) {
   FTPClient ftpClient = ftp.connectClient();
   if(ftpClient == null) return false ;
   
   boolean b = ftp.login(ftpClient, ftp.getUserName(), ftp.getPasswd());
       if(!b) {
          ftp.closeClient(ftpClient);
          return false;
       }
       
       ftpClient.enterLocalPassiveMode();
       String dirStr = null;
       if(File.separator.equals("\\")){
          dirStr = pathDownload.substring(0, pathDownload.lastIndexOf("\\"));
       }else{
          dirStr = pathDownload.substring(0, pathDownload.lastIndexOf("/"));
       }
       File file = new File(dirStr);
       if(!file.exists()){
          b = file.mkdirs();
          LogUtil.paramAndResult("-ftp get mk dir-", pathDownload, "mk dir--"+b);
       }
       file = new File(pathDownload);
       OutputStream out;
   try {
      out = new BufferedOutputStream(new FileOutputStream(file));
   } catch (FileNotFoundException e) {
      e.printStackTrace();
      LogUtil.paramAndResult("-ftp get outputstream-", pathDownload, "pathDownload not exists");
      ftp.closeClient(ftpClient);
      return false;
   }
   
       boolean success = false;
   try {
      success = ftpClient.retrieveFile(ftpPath+"/"+fileName, out);
   } catch (IOException e) {
      e.printStackTrace();
      LogUtil.error(e);
      LogUtil.paramAndResult("-ftp get file exception-", ftpPath+"/"+fileName, "");
   }
       try {
      out.close();
   } catch (IOException e) {
      e.printStackTrace();
   }
       ftp.closeClient(ftpClient);
       LogUtil.paramAndResult("-ftp get-", ftpPath+"/"+fileName, "ftp get status-"+success);
       if(!success && !file.isDirectory()){
           file.delete();
       }
   return success;
}

奇怪,没有什么问题啊。。

于是,习惯性了看了看vsftpd的日志:

输入命令:tail -n500  /var/log/vsftpd.log

很明显日志输出下载失败了,后面几个传输的都是0字节。。。

后来又重复检查了几遍参数,表面上看没有什么问题  嘿嘿~

这到底发生了什么事情了??????

无奈之下,只好Google。。。然而这对我还是没有卵用。。。

在极度的抓狂之下,突然看到传过来的文件路劲是以/home开头的。。。。

于是乎我明白了什么。。。

原来ftp的root目录已经是/home/ftpuser/res/,而传过来的路径是文件的绝对路径。。。

罪魁祸首竟然是配置文件的ftp路径配错了。。。。


修改结束后,测试一下。OK。。。。

心情变得那么些许的美丽了,哈哈


© 著作权归作者所有

悟空没了筋斗云
粉丝 1
博文 8
码字总数 2727
作品 0
南宁
程序员
私信 提问
linux上一个ftp用户删除另外一个用户创建的文件,删除失败

使用java编写的代码,一个ftp用户创建的文件,另外一个ftp用户来读取文件并删除,能正常读取,但是无法删除。ftp服务器是在Linux上安装的vsftpd,两个用户的umask值都通过用户环境变量修改一...

Howie_02
2016/05/13
469
1
Java中实现FTP上传下载文件的功能,完整代码

一个JAVA 实现FTP功能的代码,包括了服务器的设置模块,并包括有上传文件至FTP的通用方法、下载文件的通用方法以及删除文件、在ftp服务器上穿件文件夹、检测文件夹是否存在等,里面的有些代码...

Carl_
2014/11/12
6.7K
4
java千万级别数据处理(2)-千万级别FTP下载

这个也是以前做过的一个程序,目的主要是去ftp主机(最多100左右)去取xx数据文件. 千万级别只是个概念,代表数据量等于千万或者大于千万的数据 本分享不牵扯分布式采集存储之类的.是在一台机器...

迷途d书童
2012/04/26
280
0
Java使用SFTP和FTP两种连接方式实现对服务器的上传下载

一、Java实现对SFTP服务器的文件的上传下载 1、添加maven依赖: 2、SFTPUtils工具类: 二、Java实现对FTP服务器的文件的上传下载 有时系统可能要兼容ftp和sftp,而ftp的端口一般是21,sftp对...

灌南高手No1
2018/09/12
0
0
搭建自己的FTP服务器-Apache Ftp Server

原来一直使用IIS默认的做FTP服务器,但最近发现一个JVAV版的FTP服务器Apache Ftp Server。看名字就知道是Apache旗下的一个开源软件,所以应该值得使用。Apache Ftp Server地址http://mina.a...

tngou
2013/04/12
3.1K
0

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
16
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
18
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部