1 需求
由于业务种种原因,现在需要将ftp中已存文件移动到其它文件夹。
2 初始策略
一开始走上弯路,直接翻看FTPClient API有无move方法,但没发现:
于是曲线救国,想着采用先复制、再删除,伪代码:
InputStream inputStream = ftpClient.retrieveFileStream("/AAA/test.txt");
ftpClient.storeFile("/BBB/test.txt", inputStream);
ftpClient.deleteFile("/AAA/test.txt");
但不优雅,多步操作易出各种问题,最好有方法一步调用。
3 最佳方案
3.1 移动文件
突然发现rename()可实现该需求,这谁看的出来能够移动文件呢?
一行搞定需求:
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中的相对路径和绝对路径这篇文章,以免踩坑
3.2 重命名
只是目标文件夹和源文件夹名一致,只是改了文件名
ftpClient.rename("/AAA/test.txt", "/AAA/test2.txt"); // 绝对路径
关注我,紧跟本系列专栏文章,咱们下篇再续!
作者简介:魔都技术专家,多家大厂后端一线研发经验,在分布式系统、和大数据系统等方面有多年的研究和实践经验,拥有从零到一的大数据平台和基础架构研发经验,对分布式存储、数据平台架构、数据仓库等领域都有丰富实践经验。
各大技术社区头部专家博主。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。
负责:
- 中央/分销预订系统性能优化
- 活动&优惠券等营销中台建设
- 交易平台及数据中台等架构和开发设计
- 车联网核心平台-物联网连接平台、大数据平台架构设计及优化
目前主攻降低软件复杂性设计、构建高可用系统方向。
参考: