两个jar包
commons-net-1.4.1.jar
jakarta-oro-2.0.8.jar
代码
package net.sxjr.an.renbao;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Date;
import net.sxjr.an.utils.MyUtils;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
public class ApiUtilsRenbao {
public static void reportDispose(){
//ftp服务器登录凭证
String host="61.178.21.80";
int port=21;
String user="xxx";
String password="xxxx";
String txtFileDir="/";
String dateString=MyUtils.parseDate(MyUtils.changeDateByDay(new Date(), -1));
String cbString ="新承保清单"+dateString+".txt";
boolean success = false;
FTPClient ftp = new FTPClient();
//设置中文编码
ftp.setControlEncoding("GBK");
try {
int reply;
ftp.connect(host, port);
//如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
ftp.login(user, password);//登录
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return;
}
System.out.println("aaa");
ftp.changeWorkingDirectory(dateString);//转移到FTP服务器目录
FTPFile[] fs = ftp.listFiles();
for(FTPFile ff:fs){
System.out.println("line======" + ff.getName());
//遍历所有文件根据文件名匹配
if(ff.getName().equals(cbString)){
System.out.println(new Date()+" ftpDownload定时器读取成功"+ff.getName());
String result =readFile(ftp,ff.getName());
//BufferedReader br = new BufferedReader(new InputStreamReader(is));
// String line = null;
// while ((line = br.readLine()) != null) {
// System.out.println("line======" + line);
// }
// br.close();
}
}
ftp.logout();
success = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
}
/**
* 返回一个文件流
* @param fileName
* @return
*/
public static String readFile(FTPClient ftp,String fileName){
String result = "";
InputStream ins = null;
try {
ins = ftp.retrieveFileStream(fileName);
// byte []b = new byte[ins.available()];
// ins.read(b);
//BufferedReader reader=new BufferedReader(new InputStreamReader(ins));
InputStreamReader isr = new InputStreamReader(ins, "GBK");
BufferedReader reader = new BufferedReader(isr);
String inLine = reader.readLine();
while (inLine != null) {
System.out.println(inLine);
result += (inLine + System.getProperty("line.separator"));
inLine = reader.readLine();
}
reader.close();
if(ins != null){
ins.close();
}
// 主动调用一次getReply()把接下来的226消费掉. 这样做是可以解决这个返回null问题
ftp.getReply();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
public static void main(String[] args) {
reportDispose();
}
}