1、读取ftp文件
1.1、maven依赖配置
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.6</version>
</dependency>
1.2、代码(读取文件列表||文件内容)
package cn.com.beijiaoguzai.test;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import java.io.*;
/**
* ftp读取文件
*/
public class FtpUtil {
/**
* 获取FTP连接
* @param url ftp ip地址
* @param port 端口
* @param username 用户名
* @param password 密码
* @return
* @throws Exception
*/
public static FTPClient getFtpClient(String url,int port,String username,String password) throws Exception {
FTPClient ftp = null;
int reply;
ftp = new FTPClient();
// 设置timeout时间
ftp.setConnectTimeout(30000);
ftp.connect(url,port);
ftp.login(username,password);
//ftp.setFileType(FTP.ASCII_FILE_TYPE);
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return null;
}
//设置编码格式
if(FTPReply.isPositiveCompletion(ftp.sendCommand("OPTS UTF8","ON"))){
ftp.setControlEncoding("UTF-8");
}else{
ftp.setControlEncoding("GBK");
}
return ftp;
}
/**
* 获取文件夹下某个文件信息流
* @param ftpClient
* @param path 文件路径
* @param fileName 文件名
* @return
*/
public static InputStream getFTPFileInputStream(FTPClient ftpClient,String path,String fileName){
InputStream in = null;
try {
if(ftpClient == null){
return in;
}
ftpClient.changeWorkingDirectory(path);
FTPFile[] files = ftpClient.listFiles();
if(files.length > 0){
//解决中文路径问题
in = ftpClient.retrieveFileStream(new String(fileName.getBytes("gbk"), FTP.DEFAULT_CONTROL_ENCODING));
}
}catch (Exception e){
e.printStackTrace();
System.out.println("FTP 读取数据异常!");
}finally{
//关闭连接
if(ftpClient != null){
disConnection(ftpClient);
}
return in;
}
}
/**
* 获取Ftp 文件内容
* @param url ftp ip地址
* @param port 端口
*