以下介绍的是在ftp上获取csv文件(类似excel文件)上的信息,并且打印出来,具体的操作会在代码的注释中说明
创建接口
import java.io.InputStream;
import java.util.ArrayList;
import org.apache.commons.net.ftp.FTPClient;
/**
*
* 接口定义
*
*
*/
public interface FtpInterface {
public FTPClient ftp(String ip,String user,String password);
public ArrayList<String[]> csv(InputStream in);
}
接口实现
import java.io.IOException;
import java.io.InputStream;
import java.net.SocketException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import org.apache.commons.net.ftp.FTPClient;
import com.csvreader.CsvReader;
public class Ftp implements FtpInterface {
/**
*
* <b>登陆ftp 返回ftpClient事件<b>
*
* @param ip
* ftp所在ip
* @param user
* 登陆名
* @param password
* 密码
*/
public FTPClient ftp(String ip, String user, String password) {
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(ip);
ftpClient.login(user, password);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if (!ftpClient.isConnected()) {
ftpClient = null;
}
return ftpClient;
}
/**
* <b>将一个IO流解析,转化数组形式的集合<b>
*
* @param in 文件inputStream流
*/
public ArrayList<String[]> csv(InputStream in) {
ArrayList<String[]> csvList = new ArrayList<String[]>();
if (null != in) {
CsvReader reader = new CsvReader(in, ',', Charset.forName("UTF-8"));
try {
//遍历每一行,若有#注释部分,则不处理,若没有,则加入csvList
while (reader.readRecord()) {
if (!reader.getValues()[0].contains("#"))// 清除注释部分
{
//获取的为每一行的信息,以数组的形式
csvList.add(reader.getValues());
}
}
} catch (IOException e) {
e.printStackTrace();
}
reader.close();
}
return csvList;
}
}
main函数执行获取
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
public class GetFtpData {
public GetFtpData() {
}
public static void main(String[] args) {
// 创建接口服务
FtpInterface ftpInterface = new Ftp();
// 登录ftp,获取事件
FTPClient ftp1 = ftpInterface.ftp("ftp上的ip地址", "用户名", "密码");//这里是ip,用户名,密码
if (null != ftp1) {
try {
// 更改当前工作目录,zgg为文件所在的目录
ftp1.changeWorkingDirectory("zgg");
// 从ftp上获取ggw目录下的文件
FTPFile[] file = ftp1.listFiles();
// 遍历所有文件,匹配需要查找的文件 for (int i = 0; i < file.length; i++) {
String fileName = "文件名.csv";
// 匹配到则进入
if (file[i].getName().contains(fileName)) {
// 将匹配到的文件流传入接口,转化成数组集合
ArrayList<String[]> csvList = ftpInterface.csv(ftp1
.retrieveFileStream(file[i].getName()));
// 将csv文件里的数据打印出来
// 遍历每一行
for (int row = 0; row < csvList.size(); row++) {
// 遍历每一行中的每一列
for (int j = 0; j < csvList.get(row).length; j++) {
System.out.print(csvList.get(row)[j] + "\t|");
}
System.out.println();
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
所需要的包:
1. javacsv.jar,下载地址:http://download.csdn.net/detail/aguang_vip/7537577
2. jakarta-oro-2.0.8.jar,下载地址:http://download.csdn.net/detail/aguang_vip/7537561
3. commons-net.-1.4.1jar,下载地址:http://download.csdn.net/detail/aguang_vip/7537505
---------------------
作者:aguang_vip
来源:CSDN
原文:https://blog.csdn.net/aguang_vip/article/details/33709971
版权声明:本文为博主原创文章,转载请附上博文链接!