Java Ftp
粗略看了一边,决定选择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服务器
FTPClient ftp = new FTPClient();
ftp.connect(server);
ftp.login(username, password);
System.out.println("Connected to " + server + ".");
System.out.print(ftp.getReplyString());
类似使用ftp命令登录FTP服务器以后,可以执行各种命令比如cd和ls,可以调用FTPClient的函数比如FTPClient.changeWorkingDirectory(folder); 改变当前目录, FTPClient.listFiles()枚举当前目录下的所有文件。
2. 使用FTPClient下载文件
FTPFile[] files = ftp.listFiles();
System.out.println("Number of files in dir: " + files.length);
for (int i = 0; i < files.length; i++) {
File file = new File(destinationFolder + File.separator
+ files[i].getName());
FileOutputStream fos = new FileOutputStream(file);
ftp.retrieveFile(files[i].getName(), fos);
fos.close();
file.setLastModified(fileDate.getTime());
}
FTPClient.retrieveFile从FTP服务器上取回一个文件。其实我更关心的是上传的功能。
3. 使用FTPClient上传文件
FileInputStream fis = new FileInputStream(localFileName);
ftp.storeFile(remoteFileName, fis);
和retrieveFile相对应的storeFile上传一个本地文件。完事后别忘了关闭FTPClient。
4. 关闭FTPClient
ftp.logout();
ftp.disconnect();
简洁起见,以上的代码忽略了错误处理。FTPClient还支持其他一些函数,比如makeDirectory(String pathname) 在服务器上新建一个目录。rename(String from, String to) 改变一个文件的名字。 具体的请参照Commons Net的API文档。