- 引入jar包:
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.5</version>
</dependency>
实现类:
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.FTPFile;
/**
* @author xingpf
* @create-time 2019年6月10日 下午7:08:20
* @description:
*/
public class FTPUtil {
//从FTP下载文件到本地
public static String downloadExpofile(String ftpUrl,int ftpPort,String ftpUser,String ftpPass,String localPath,String remotePath,String fileName) {
File lfile = new File(localPath);
if(!lfile.exists()) {
lfile.mkdirs();
}
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(ftpUrl, ftpPort);
ftpClient.login(ftpUser, ftpPass);
//System.out.println("登录FTP返回码:"+ftpClient.getReplyCode());
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); //以二进制流方式传输
//转到下载目录
ftpClient.changeWorkingDirectory(remotePath);
//列出该目录下所有文件
FTPFile [] files = ftpClient.listFiles();
if(files.length == 0) {
System.out.println("FTP远程文件目录为空!");
return "fail";
}
//遍历所有文件,找到指定的文件
for (FTPFile f : files) {
if(f.getName().equals(fileName)) {
//根据绝对路径,初始化文件
File localFile = new File(localPath+"/"+f.getName());
//输出流
OutputStream os = new FileOutputStream(localFile);
//下载文件
ftpClient.retrieveFile(f.getName(), os);
os.close();
}
}
//退出ftp
ftpClient.logout();
} catch (IOException e) {
System.out.println("读取FTP文件异常");
return "fail";
}
return "success";
}
}