Java实现ftp的上传、下载和删除
前期準備
1. 搭建Ftp服務器
為了方便本地測試,一開始可以先在本地搭建Ftp服務器。搭建Ftp服務器的教程有很多,這里就不多講了,下面是我用到的教程你們可以參考一下。
百度經驗:Win10如何搭建FTP服務器
要注意幾點:
- 權限分配的時候要允許“讀和寫”,這樣才可以確保上傳和下載的順利進行。
- 不能用匿名登陸,不然會測試的時候FTPClient會連接不上。
- 搭建完后可以自己先測試一下,用另一臺電腦連接進行上傳、下載和刪除等操作。
2. 導入相關的包
實現這些功能要用到一個FTPClient類,需要從外部導入commons-net-3.6包。如果是不是Maven項目,只能從網絡下載包。下載地址如下:
官網下載地址
如果是Maven項目,只需要添加相關依賴:
<dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.6</version> </dependency>ps:如果需要其他包的時候,可以到這個網站上找相關依賴怎么寫。
https://mvnrepository.com/
正式開碼
1. Ftp服務器的連接
連接ftp服務器之前需要用到以下參數,可以直接寫死,有經常更改的需求的話可以選擇從配置文件中讀取。
ps:相關參數都填自己的,我這里是為了給個例子亂填的。
private static FTPClient ftpClient; //創建對象 private static String ip = "192.168.0.1"; //ftp地址 private static Integer port = 21; //ftp默認端口號是21 private static String userName = "Veggie"; //用戶名 private static String passWord = "root"; //密碼接下來就是執行初始化操作,包括對量初始化、連接和登陸。
無法連接失敗可能的原因:
- 不在同一個局域網中,要在同一個局域網中才能連接。
- 顯示連接已經被重置,可以選擇用IIS管理器重啟Ftp服務器。再不行的話,可以先把創建的Ftp刪除再重新創建。
雖然之前試過操作完成之后沒有關閉連接,但是關閉連接應該還是有一定意義的,還是調用一下吧。
public static void dropFtpClient() {try {ftpClient.logout(); //退出登陸if (ftpClient.isConnected()) {//檢測是否連接Ftp服務器ftpClient.disconnect(); //關閉連接}} catch (IOException e) {e.printStackTrace();} }2. 上傳操作
如果上傳有問題,有可能是沒有開啟給連接者分配“寫”的權限。
/*** 上傳文件** @param pathname ftp服務保存地址* @param originfilename 待上傳文件的名稱(絕對地址) ** @return*/ public static boolean uploadFile(String pathname, String originfilename) {boolean is_success = false;InputStream inputStream = null;try {File localFile = new File(originfilename);inputStream = new FileInputStream(localFile);ftpClient.setFileType(FTP.BINARY_FILE_TYPE);ftpClient.changeWorkingDirectory(pathname); //跳轉到指定的Ftp文件目錄(相對路徑)is_success = ftpClient.storeFile(localFile.getName(), inputStream);//上傳文件inputStream.close();} catch (Exception e) {e.printStackTrace();}return is_success; }3. 下載操作
這個下載操作是把該路徑下所有的文件都下載來,也可以根據自己的需求改寫為下載里面某個指定的文件。
相應的,如果在參數傳遞沒有問題的情況下出現下載是失敗的情況,就要去看看有沒有“讀”的權限。
4. 刪除操作
如果上面兩個操作都沒問題的話,一般刪除也不會有問題。
/** 刪除文件** @param pathName ftp服務器文件目錄* @param fileName 刪除的文件名* @return*/ public static boolean deleteFile(String pathNmae, String fileName) {boolean is_success = false;try {ftpClient.changeWorkingDirectory(pathNmae);is_success = ftpClient.deleteFile(fileName);//刪除文件} catch (Exception e) {e.printStackTrace();}return is_success; }測試
雖然為了簡化代碼去掉了很多異常情況處理操作,但是在正常情況下還是可以完成上述操作的。有那么多功能總要測試一下,可以看到我們測試的步驟為:
通過觀察控制臺返回的信息,看到在我的電腦上測試是沒有問題,可以到文件夾看看是不是真的成功了。
//看了一下,確實是成功了的
參考資料
關于這個參考資料,我一直都覺得很坑爹,在網上找的資料百分之五六十里面的內容都是一樣的,而且都標注著原創(說原創起碼要有點自己的東西嘛)。有的還直接把人家的內容直接復制上去,也不標注出處,連格式都懶得該一下,我也是醉了,開始莫名反感這種行為。
https://blog.csdn.net/lht931942788/article/details/80278916
總結
以上是生活随笔為你收集整理的Java实现ftp的上传、下载和删除的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringData JPA条件查询、排
- 下一篇: 2019CCPC网络选拔赛签到题题解