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 阅读(2646) 评论(1)  编辑  收藏 所属分类: Java

评论

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

基本上都是大同小异。。。  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 
<2007年7月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

统计

公告

  • 转载请注明出处.
  • msn: gr8vyguy at live.com
  • 常用链接

    留言簿(9)

    随笔分类(68)

    随笔档案(80)

    文章分类(1)

    My Open Source Projects

    搜索

    积分与排名

    最新评论