1 需求 由於業務種種原因,現在需要將ftp中已存文件移動到其它文件夾。 2 初始策略 一開始走上彎路,直接翻看FTPClient API有無move方法,但沒發現: 於是曲線救國,想著採用先複製、再刪除,偽代碼: InputStream inputStream = ftpClient.retrie ...
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"); // 絕對路徑
關註我,緊跟本系列專欄文章,咱們下篇再續!
作者簡介:魔都技術專家,多家大廠後端一線研發經驗,在分散式系統、和大數據系統等方面有多年的研究和實踐經驗,擁有從零到一的大數據平臺和基礎架構研發經驗,對分散式存儲、數據平臺架構、數據倉庫等領域都有豐富實踐經驗。
各大技術社區頭部專家博主。具有豐富的引領團隊經驗,深厚業務架構和解決方案的積累。
負責:
- 中央/分銷預訂系統性能優化
- 活動&優惠券等營銷中台建設
- 交易平臺及數據中台等架構和開發設計
- 車聯網核心平臺-物聯網連接平臺、大數據平臺架構設計及優化
目前主攻降低軟體複雜性設計、構建高可用系統方向。
參考:
本文由博客一文多發平臺 OpenWrite 發佈!