java ftp 上传下载,当前文件格式错误或者数据损坏 / 读取FTP文件列表为null值,等待时间很长,且不报错

  • 上传下载相关问题

    • 检查vsftp服务器文件
      ftp上传上去的文件是否是正常文件,下载解压检查
    • 检查下载路径是否正确
      debug检查下载路径,下载路径不正确,下载后输出的文件也会报损坏或者格式错误
    • 若是上传至服务器的文件格式不正确,检查上传格式
      client.setFileType(FTP.BINARY_FILE_TYPE);
      Windows上传至Linux FTP服务文件模式是不一样的,在ftpclient登录后,设置文件类型。
    • 同样若是上传后格式正确,下载路径也是对的,检查下载时ftpclient设置的文件格式
      client.setFileType(FTP.BINARY_FILE_TYPE);
  • java 读取ftp文件问题

    • ftpclient.listNames(path) 读取不到ftp服务器上的文件(被动模式导致的问题)
      首先检查路径是不是对的,路径不对读个毛。
      然后检查vsftp服务器是什么模式,如果是被动模式的话,在login以后,加上ftpclient.enterRemotePassiveMode();设置被动模式
    • 被动模式下,根路径问题
      vsftp为被动模式情况下,设置的根路径,在ftpclient做操作时,不会生效(具体可以仔细研究为啥),相对路径读取时,依旧读取不到文件列表
      ftpclient.printWorkingDirectory获取到根路径,然后拼接到相对路径前即可获取到

    以上问题在主动模式下,正常情况下不会出现

  • changeWorkingDirectory不生效问题

    • 明明当前工作路径是根路径,就是无法使用changeWorkingDirectory切换到存在的路径下
      1、检查vsftp模式,被动模式下默认的根路径不会生效,可以ftpclient.printWorkingDirectory获取到根路径,然后拼接到需要切换的目录前,进行绝对路径的切换,相对路径切换不生效。
      2、ftpclient.enterRemotePassiveMode();设置被动模式,然后尝试(未进行验证),如果还是不行,那就绝对路径切换。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中使用FTP下载Word文件,需要注意以下几点,以保证文件名和文件内容不会出现乱码: 1. 指定FTP文件传输格式:在下载文件之前,需要设置FTP的传输格式为二进制传输格式,以保证文件内容不会出现乱码。可以使用FTPClient的setFileType方法设置传输格式为二进制传输格式: ``` FTPClient ftp = new FTPClient(); ftp.connect(server, port); ftp.login(user, password); ftp.setFileType(FTP.BINARY_FILE_TYPE); ``` 2. 指定文件名编码格式:在下载文件之前,需要指定要下载文件名编码格式,以保证文件名不会出现乱码。可以使用FTPClient的setControlEncoding方法指定文件名编码格式: ``` FTPClient ftp = new FTPClient(); ftp.connect(server, port); ftp.login(user, password); ftp.setFileType(FTP.BINARY_FILE_TYPE); ftp.setControlEncoding("UTF-8"); ``` 3. 指定本地文件名编码格式:在将文件保存到本地磁盘时,需要指定本地文件名编码格式,以保证文件名不会出现乱码。可以使用Java的URLDecoder解码方法对文件名进行解码: ``` InputStream in = ftp.retrieveFileStream(remoteFilePath); OutputStream out = new FileOutputStream(URLDecoder.decode(localFilePath, "UTF-8")); ``` 4. 使用合适的文本编码格式:如果下载文件是Word文档,需要使用合适的文本编码格式来读取文件内容,以保证文件内容不会出现乱码。可以使用Java的FileInputStream和InputStreamReader类来读取文件内容,并指定合适的文本编码格式: ``` FileInputStream fis = new FileInputStream(localFilePath); InputStreamReader isr = new InputStreamReader(fis, "UTF-8"); BufferedReader br = new BufferedReader(isr); String line; while ((line = br.readLine()) != null) { // 处理文件内容 } ``` 综上所述,可以使用上述方法来实现在Java下载FTP上的Word文件,同时保证文件名和文件内容不会出现乱码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值