踩过的坑
有个需求是要将ftp中处理过的文件移动到某个备份文件夹
一开始走了弯路,一直要找FTPClient中有没move或remove之类的方法,但是一直找不到
后来就曲线救国,采用先复制文件再删除的方法,例如下面的伪代码
但是这样的代码不是很优雅,最好是有个方法直接调用,而且后来的操作中出现了一些莫名其妙的问题也不知道这样的写法是否有问题
InputStream inputStream = ftpClient.retrieveFileStream("/AAA/test.txt");
ftpClient.storeFile("/BBB/test.txt", inputStream);
ftpClient.deleteFile("/AAA/test.txt");
优雅的方法
后来找了很久发现了rename()可以实现该需求,坑爹啊.jpg,这方法名谁看的出来可以移动文件
一句话搞定
ftpClient.rename("/AAA/test.txt", "/BBB/test.txt"); // 绝对路径
还可以支持相对路径
ftpClient.rename("CCC/test.txt", "DDD/test.txt");
还可以绝对路径和相对路径一起用
ftpClient.rename("/EEE/test.txt", "FFF/test.txt");
绝对路径是以"/"开头的路径,相对路径是不以"/"开头的路径,关于两者的区别可以参考java FTPClient中的相对路径和绝对路径这篇文章,以免踩坑
重命名
重命名其实使用方法一样,只是目标文件夹和源文件夹名一致,只是改了文件名
ftpClient.rename("/AAA/test.txt", "/AAA/test2.txt"); // 绝对路径