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 釋出!