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 閱讀(2663) 評論(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

          搜索

          積分與排名

          最新評論

          主站蜘蛛池模板: 长兴县| 清水县| 获嘉县| 台州市| 二手房| 卢龙县| 铁岭县| 友谊县| 长春市| 洮南市| 万全县| 墨玉县| 眉山市| 扎兰屯市| 张家川| 桐柏县| 巴彦县| 仲巴县| 嘉荫县| 称多县| 满洲里市| 新邵县| 穆棱市| 许昌市| 乐山市| 裕民县| 冀州市| 南康市| 湘潭县| 平阴县| 德昌县| 忻城县| 南开区| 北票市| 林口县| 伽师县| 香格里拉县| 肃南| 镇康县| 六盘水市| 名山县|