第一步:添加依赖
commons-net
commons-net
3.1
commons-io
commons-io
2.6
第二步:连接FTP服务器下载文件
public static void downloadFtpFile(String ftpIp, String ftpUserName, String ftpPassword,int ftpPort, String ftpPath, String localPath,String fileName){
FTPClient ftpClient = null;
try {
ftpClient = getFTPClient(ftpIp,ftpUserName,ftpPassword,ftpPort);
ftpClient.setControlEncoding("UTP-8");
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.enterLocalActiveMode();
ftpClient.changeWorkingDirectory(ftpPath);
//判断本地路径是否存在,不存在进行创建
File file1 = new File(localPath);
if (!file1.exists()){
file1.mkdirs();
}
//把文件写入到本地路径
File localFile = new File(localPath + fileName);
OutputStream os = new FileOutputStream(localFile);
ftpClient.retrieveFile(fileName,os);
os.close();
ftpClient.logout();
}catch (FileNotFoundException e){
System.out.println("没有找到文件");
log.error("没有找到要下载的文件");
} catch (SocketException e) {
System.out.println("连接失败");
log.error("连接下载文件的FTP失败");
}catch (IOException e){
System.out.println("读写异常");
log.error("读写文件异常");
}
}
public static FTPClient getFTPClient(String ftpIp,String ftpUserName, String ftpPassword,int ftpPort){
FTPClient ftpClient = new FTPClient();
try{
ftpClient = new FTPClient();
ftpClient.connect(ftpIp,ftpPort);
ftpClient.login(ftpUserName,ftpPassword);
if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())){
System.out.println("未连接到FTP");
}else {
System.out.println("连接成功");
}
}catch (SocketException e){
e.printStackTrace();
log.error("连接下载文件的FTP失败");
} catch (IOException e) {
e.printStackTrace();
}
return ftpClient;
}