1.目录
FTPClient的路径跳转之后,之后所做的操作都是在当前目录下,若要在其它目录下需要跳转到相应目录
client.printWorkingDirectory() 获取当前目录
client.changeWorkingDirectory(path) 目录跳转
2.文件删除,和File处理不同,FTPClient目录删除和文件删除的命令不一样
client.removeDirectory(filePath) 删除目录
client.deleteFile(filePath) 删除文件
3.文件流操作,需要关闭流
retrieveFileStream() 完成后必须调用completePendingCommand()
并且验证是否返回success
storeFileStream()同样
如下
if (!client.completePendingCommand()) {
this.destroy();
this.afterPropertiesSet();
}
注意:completePendingCommand()这个方法不能连续调用两次,不然程序会卡住,只有再次进行了文件流的操作的时候才需要调用
官方文档:https://commons.apache.org/proper/commons-net/javadocs/api-3.6/index.html
4.模式设置,有的环境下文件获取以及上传都需要设置
ftpClient.listFiles()返回null, 或者返回421错误,都有可能是因为没有设置enterLocalPassiveMode模式。
我在Windows以及Linux环境下测试这些方法都没有问题,把服务放到docker上以后就报了上述问题,研究后发现是需要设置enterLocalPassiveMode这个模式,可能是docker环境导致端口号不稳定的原因。
https://www.cnblogs.com/wqsbk/p/6526005.html