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

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

前几天明明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。。。。

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


你可能感兴趣的:(java 使用 ftp下载文件失败的问题)