java读取ftp文件,并获取文件内容

以下介绍的是在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 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 {

	/**
	 * 
	 * 登陆ftp 返回ftpClient事件
	 * 
	 * @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;
	}

	/**
	 * 将一个IO流解析,转化数组形式的集合
	 * 
	 * @param in 文件inputStream流
	 */
	public ArrayList csv(InputStream in) {
		ArrayList csvList = new ArrayList();
		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 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

你可能感兴趣的:(java)