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<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 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值