Java?FTP協(xié)議實現(xiàn)文件下載功能
一、FTP協(xié)議
ftp是(FileTransferProtocol)的縮寫,文件傳輸協(xié)議必然是用來傳輸文件的協(xié)議。并且是用來在兩臺計算機之間傳輸文件,是internet中應用非常廣泛的服務之一。FTP是一種基于TCP的協(xié)議,具有跨平臺的特性,支持Windows,Linux,Unix等操作系統(tǒng)。采用客戶/服務器模式,通過FTP服務器可以快速的下載,上傳文件。同時它也是一個應用程序,通過FTP客戶端與他人的服務器連接,可以訪問服務器上的文件或信息。FTP(文件傳輸協(xié)議)也是C/S架,分為兩部分:FTP服務器、FTP客戶端。服務器是基于Easy FTP服務器,如圖所示:
二、文件上傳
由于FTP協(xié)議的傳輸是基于TCP協(xié)議,所以步驟大致分為:建立與服務器的連接、登錄操作、具體實現(xiàn)的操作、斷開連接。
1.連接服務器
// 1.創(chuàng)建FTPClient的用戶對象 FTPClient ftpClient = new FTPClient(); // 連接服務器 ftpClient.connect("192.168.254.185", 21);
2.登錄操作
// 2.登錄【用戶名,密碼】 ftpClient.login("****", "*****");
3.上傳操作
首先先確定上傳至服務器的哪個文件夾,若沒有此文件夾則創(chuàng)建此文件夾;接著獲取上傳文件的位置;然后設置上傳文件的類型,通過storeFile()方法將目標文件上傳至服務器;最后切記斷開與服務器的連接。
// 3.上傳操作 // 切換為指定的文件夾 boolean isChange = ftpClient.changeWorkingDirectory("data"); // 判斷文件是否存在 if(!isChange) { // 不存在,則創(chuàng)建文件 ftpClient.makeDirectory("data"); // 在切換至指定的文件夾 ftpClient.changeWorkingDirectory("data"); } // 設置上傳的文件類型 ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); // 上傳的目標文件位置 FileInputStream fileLoad = new FileInputStream("E://JavaTest//aaa//lazy.jpg") // 上傳文件 // 參數(shù)1:保存的文件名稱 //參數(shù)2:本地的文件位置 ftpClient.storeFile("data.jpg", fileLoad); } catch (IOException e) { e.printStackTrace(); }finally{ try { // 必須斷開與服務器的連接 ftpClient.disconnect(); } catch (IOException e) { e.printStackTrace(); } }
三、文件下載
文件的下載也是大致分為三部分:建立于服務器之間的連接、登錄操作、具體操作、斷開連接。
1.連接服務器
// 1.創(chuàng)建FTPClient的用戶對象 FTPClient ftpClient = new FTPClient(); // 連接服務器 ftpClient.connect("192.168.254.185", 21);
2.登錄操作
// 2.登錄【用戶名,密碼】 ftpClient.login("****", "*****");
3.下載操作
首先先獲取服務器上的文件;接著選擇下載的文件;然后設置下載文件的類型,通過retrieveFile()方法將目標文件下載至本地文件中;最后切記斷開與服務器的連接。
// 3.存儲至本地磁盤的位置 // 獲取的圖片名稱 String fileName = "lay.jpg"; try (FileOutputStream out = new FileOutputStream("E:\\JavaTest\\ccc\\" + fileName)) { // 切換至文件的位置 ftpClient.changeWorkingDirectory("bbb"); // 設置文件的類型 ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); // 參數(shù)1:文件保存的名稱 // 參數(shù)2:下載至本地的位置 ftpClient.retrieveFile(fileName, out); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { // 斷開與服務器的連接 ftpClient.disconnect(); } catch (IOException e) { e.printStackTrace(); } }
四、總結
清楚FTP協(xié)議的文件傳輸是基于TCP/IP協(xié)議上,TCP協(xié)議最主要的點是:客戶端與服務器之間是建立連接,實現(xiàn)點對點的傳輸。所以在文件傳輸或下載時,先建立連接,再登錄驗證,然后實現(xiàn)具體的操作過程,最后切記要斷開客戶端與服務器之間的連接。
到此這篇關于Java FTP協(xié)議實現(xiàn)文件下載功能的文章就介紹到這了,更多相關Java文件下載內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
java從命令行獲取數(shù)據(jù)的三種方式代碼實例
這篇文章主要介紹了java從命令行獲取數(shù)據(jù)的三種方式代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-12-12Java獲取當前系統(tǒng)事件System.currentTimeMillis()方法
下面小編就為大家?guī)硪黄狫ava獲取當前系統(tǒng)事件System.currentTimeMillis()方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06