首先需要jar包,下载地址:
变量声明
private FTPClient ftpClient = new FTPClient();
(1)创建连接
/**
*
* java编程中用于连接到FTP服务器
*
* @param hostname
* 主机名
*
* @param port
* 端口
*
* @param username
* 用户名
*
* @param password
* 密码
*
* @return 是否连接成功
*
* @throws IOException
*/
public boolean connect(String hostname, int port, String username,
String password) throws IOException {
ftpClient.connect(hostname, port);
if (FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
if (ftpClient.login(username, password)) {
return true;
}
}
disconnect();
return false;
}
(2)获取ftp目录下载该目录下的所有文件。
public boolean download(String remote, String local,String fileFiler) throws IOException, ParseException {
ftpClient.enterLocalPassiveMode();
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
boolean result = false;
filenum=fileFiler.lastIndexOf('*');
File f = null;
FTPFile[] files = ftpClient.listFiles(remote);
// 获取全部路径
for (int i = 0; i < files.length; i++) {
fileName = files[i].getName();
num=fileName.indexOf('.');
//符合扩展名需求
if(fileName.substring(num).endsWith(".txt"))
{
// 获取文件名
f = new File(local + fileName);
//获取标准文件
long lRemoteSize = files[i].getSize();
try {
//下载过的不在下载了
OutputStream out = new FileOutputStream(f, true);
if (f.length() >= lRemoteSize) {
System.out.println("本地已经存在,下载中止");
}
ftpClient.setRestartOffset(f.length());
result = ftpClient.retrieveFile(remote + fileName, out);
System.out.println(fileName+"下载成功\r\n");
out.close();
} catch (Exception ex) {
}
}
}
return true;
}
(3)关闭连接
/**
* 断开与远程服务器的连接
*
* @throws IOException
*/
public void disconnect() throws IOException {
if (ftpClient.isConnected()) {
ftpClient.disconnect();
}
}