gr8vyguy@Blogjava

          Java Ftp

          想為新作的Blog客戶端易博增加FTP上傳的功能,最省地的方法當然是利用JDK里的Socket類自己處理FTP的協議,雖然FTP不算是很復雜的協議,但是實現起來還是有點麻煩,容易出錯。當然不如使用現成的工具庫來得省事可靠。

          Java World上有篇比較支持FTP協議的Java工具庫的文章,寫得很全面。
                   Java FTP client libraries reviewed

          粗略看了一邊,決定選擇The Jakarta Project, Jakarta Commons/Net。Common Net是Jakarta Commons下的一個子項目,支持包括FTP在內的多種Internet協議, 其他有比如Finger, Whois,Telnet,POP3等等。

          Common Net支持FTP的關鍵類是org.apache.commons.net.ftp.FTPClient. 下面介紹一些具體的使用方法。

          1. 使用FTPClient連接和登錄FTP服務器

          1. FTPClient ftp = new FTPClient();   
          2. ftp.connect(server);   
          3. ftp.login(username, password);   
          4. System.out.println("Connected to " + server + ".");   
          5. System.out.print(ftp.getReplyString());  

          類似使用ftp命令登錄FTP服務器以后,可以執行各種命令比如cd和ls,可以調用FTPClient的函數比如FTPClient.changeWorkingDirectory(folder); 改變當前目錄, FTPClient.listFiles()枚舉當前目錄下的所有文件。

          2. 使用FTPClient下載文件
          1. FTPFile[] files = ftp.listFiles();   
          2. System.out.println("Number of files in dir: " + files.length);   
          3. for (int i = 0; i < files.length; i++) {   
          4.     File file = new File(destinationFolder + File.separator   
          5.                     + files[i].getName());   
          6.     FileOutputStream fos = new FileOutputStream(file);   
          7.     ftp.retrieveFile(files[i].getName(), fos);   
          8.     fos.close();   
          9.     file.setLastModified(fileDate.getTime());   
          10. }  

          FTPClient.retrieveFile從FTP服務器上取回一個文件。其實我更關心的是上傳的功能。

          3. 使用FTPClient上傳文件
          1. FileInputStream fis = new FileInputStream(localFileName);   
          2. ftp.storeFile(remoteFileName, fis);  

          和retrieveFile相對應的storeFile上傳一個本地文件。完事后別忘了關閉FTPClient。

          4. 關閉FTPClient
          1. ftp.logout();   
          2. ftp.disconnect();  

          簡潔起見,以上的代碼忽略了錯誤處理。FTPClient還支持其他一些函數,比如makeDirectory(String pathname) 在服務器上新建一個目錄。rename(String from, String to) 改變一個文件的名字。 具體的請參照Commons Net的API文檔。

          易博客戶端介紹

          posted on 2007-07-13 02:19 gr8vyguy 閱讀(2670) 評論(1)  編輯  收藏 所屬分類: Java

          評論

          # re: Java Ftp 2007-07-13 02:47 ddd

          基本上都是大同小異。。。  回復  更多評論   

          <2007年7月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          導航

          統計

          公告

        1. 轉載請注明出處.
        2. msn: gr8vyguy at live.com
        3. 常用鏈接

          留言簿(9)

          隨筆分類(68)

          隨筆檔案(80)

          文章分類(1)

          My Open Source Projects

          搜索

          積分與排名

          最新評論

          主站蜘蛛池模板: 呼和浩特市| 镇坪县| 华蓥市| 轮台县| 恩施市| 伊春市| 鱼台县| 安庆市| 名山县| 广南县| 普陀区| 汉川市| 清远市| 红原县| 沁阳市| 乐陵市| 桓台县| 巩义市| 通榆县| 长子县| 布尔津县| 长寿区| 定南县| 伊金霍洛旗| 柳林县| 景泰县| 湘潭县| 海淀区| 马龙县| 桦南县| 八宿县| 方城县| 巩留县| 濉溪县| 双牌县| 静宁县| 城固县| 博乐市| 克什克腾旗| 汾阳市| 余干县|