一. 使用FileUtils(推荐)
1. pom引入依赖:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
2. 代码:
package org.yd.yufanlan.util;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.commons.io.FileUtils;
/**
* ftp工具
*
* @version 2020年3月14日 下午3:13:59
* @see org.yd.yufanlan.util.FtpUtil
*
*/
public class FtpUtil {
/**
* 从ftp下载文件
*
* @param ftpPath ftp路径
* @param absolutelyPath 本地路径
* @version 2020年3月14日 下午3:16:37
*/
public static void downFile(String ftpPath,String absolutelyPath){
File file = new File(absolutelyPath);
try {
FileUtils.copyURLToFile(new URL(ftpPath), file);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
//ftp路径 ftp://192.168.0.96:8010/recordsImg/0/2020-03-14/342_1584165146573.jpg
downFile("ftp://192.168.0.96:8010/recordsImg/0/2020-03-14/342_1584165146573.jpg", "F://1.jpg");
}
}
3.下载结果:
二. commons-net
1. pom引入依赖:
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.6</version>
</dependency>
2. 代码:
package org.yd.business.attend.web.set;
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;
import org.apache.commons.net.ftp.FTPReply;
public class FtpUtils {
/**
* 匿名下载ftp文件
*
* @param ip
* @param ftpFilePath ftp文件路径
* @param ftpFileName ftp文件名
* @param savePath 保存路径
* @return
* @version 2020年3月14日 下午2:57:21
*/
public static String downFile(String ip, String ftpFilePath, String ftpFileName, String savePath) {
FTPClient ftp = new FTPClient();
try {
int reply;
ftp.connect(ip, 8010);
ftp.login("anonymous", null);// 登录(匿名用户登录)
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return null;
}
ftp.changeWorkingDirectory(ftpFilePath);// 转移到FTP服务器目录
FTPFile[] fs = ftp.listFiles();
for (FTPFile ff : fs) {
if (ff.getName().equals(ftpFileName)) {
File localFile = new File(savePath + ff.getName());
if (!localFile.exists()) {
if (!localFile.getParentFile().exists()) {
localFile.getParentFile().mkdirs();
}
localFile.createNewFile();
}
OutputStream is = new FileOutputStream(localFile);
ftp.setFileType(ftp.BINARY_FILE_TYPE);
ftp.retrieveFile(ff.getName(), is);
is.close();
}
}
ftp.logout();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return ftpFileName;
}
}
public static void main(String[] args) {
//ftp路径 ftp://192.168.0.96:8010/recordsImg/0/2020-03-14/342_1584165146573.jpg
FtpUtils.downFile("192.168.0.96", "/recordsImg/0/2020-03-14/", "342_1584165146573.jpg", "F://" );
}
3.下载结果: