利用commons-net-3.3,实现ftp的文件下载功能

近期公司需求,需要从现场下载文件进行解析.关键是这个文件如何获取!
当然是通过FTP文件传输的方式获取最为简单方便.于是有了下面的代码.

package com.net.test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.junit.Test;
public class FTPTest {
@Test
public void testftpmain() {
String hostname = "127.0.0.1";//
int port = 21;
String username = "eFlow";//
String password = "eFlow";//eFlow
String pathname = "/上传";///上传
String filename = "ASSETPHOTO_ATTACHMENT.sql";
String originfilename = "C:/Users/Administrator/Desktop/测试FTP下载";

boolean downloadFile = downloadFile(hostname, port, username, password, pathname, filename, originfilename);
//System.out.print(System.currentTimeMillis());

}

/**
* 下载文件
*
* @param hostname
*            FTP服务器地址
* @param port
*            FTP服务器端口号
* @param username
*            FTP登录帐号
* @param password
*            FTP登录密码
* @param pathname
*            FTP服务器文件目录
* @param filename
*            文件名称
* @param localpath
*            下载后的文件路径
* @return
*/
public boolean downloadFile(String hostname, int port,
String username, String password, String pathname, String filename,
String localpath) {
boolean flag = false;
FTPClient ftpClient = new FTPClient();

ftpClient.setControlEncoding("utf-8");//避免中文文件乱码问题

FTPClientConfig conf = new FTPClientConfig(FTPClientConfig.SYST_NT);
conf.setServerLanguageCode("zh");

try {
// 连接FTP服务器
ftpClient.connect(hostname, port);
// 登录FTP服务器
boolean login = ftpClient.login(username, password);
// 验证FTP服务器是否登录成功
int replyCode = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(replyCode)) {
return flag;
}
// 切换FTP目录
ftpClient.changeWorkingDirectory(pathname);
FTPFile[] ftpFiles = ftpClient.listFiles();
for (FTPFile file : ftpFiles) {
System.out.println(file.getName());
if (filename.equalsIgnoreCase(file.getName())) {

File localFile = new File(localpath + "/" + file.getName());
OutputStream os = new FileOutputStream(localFile);

ftpClient.retrieveFile(file.getName(), os);
os.close();
}
}
ftpClient.logout();
flag = true;
} catch (Exception e) {
e.printStackTrace();
} finally {
if (ftpClient.isConnected()) {
try {
ftpClient.logout();
} catch (IOException e) {

}
}
}
return flag;
}
}


下面附有:commons-net-3.3.jar

猜你喜欢

转载自shuhui.iteye.com/blog/2319749