定时从ftp上下载txt文件到数据库中

第一步:编写java代码

@Service("BaseDataTask")
public class BaseDataTask {
    private static Logger logger = Logger.getLogger(BaseDataTask.class.getName());

    @Resource
    private TAreaMapper areaMapper;

    private String ftpIP  = "";// ftp地址
    private String userName = "";// 用户名
    private String userPwd = ""; // 密码
    private int ftpPort = 21;// ftp端口号
    FTPClient fc = null;//ftp对象
    BufferedReader bufferedReader = null;
    InputStream fget = null;
    String fileName="";//文件名


    public void BaseDataTask() {
        downloadArea();//区域
    }

    
    public boolean  downloadArea() {
        boolean success = false;
        try {
            SimpleDateFormat fileDate = new SimpleDateFormat("yyyyMMdd");
            String nowDate = fileDate.format(new Date());//当前日期
            String newName="area_"+nowDate+".txt";//文件名
            int reply;
            fc = new FTPClient();// ftp客户端对象
            fc.connect(ftpIP,ftpPort);// 连接ftp服务器
            fc.login(userName, userPwd);// 登录ftp服务器
            //判断登陆是否成功
            reply = fc.getReplyCode();
            if (!FTPReply.isPositiveCompletion(reply)) {
                fc.disconnect();
            }
            FTPFile[] fs = fc.listFiles();//ftp下的所有文件名称
            for (FTPFile ftpfile : fs) { //遍历所有文件
                fileName = ftpfile.getName();
                if (fileName.equals(newName)) {
                    logger.info("********" + nowDate + ":开始下载区域信息数据!");
                    //logger.info("------------数据库操作---------");
                    String userID = "admin";
                    String read;//每一行数据
                    int lineNo = 1;//行数
                    String areaname = "";//区域名称
                    String fareaname = "";//所属上级区域名
                    TArea area = new TArea();
                    fget = fc.retrieveFileStream(newName);// 读取ftp远程文件数据
                    bufferedReader = new BufferedReader(new InputStreamReader(fget, "UTF-8"));
                    bufferedReader.readLine();//先执行一次,除去标题的内容
                    lineNo++;
                    while ((read = bufferedReader.readLine()) != null) {
			//这个里面就写数据库操作步骤
                        lineNo++;
                    }
                    logger.info("********" + nowDate + ":结束下载区域信息数据!");
                    success=true;
                }
                success = false;
            }
            // 退出登陆
            fc.logout();
        } catch (IOException e) {
            try {
                bufferedReader.close();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            e.printStackTrace();
        }
        return success;

    }

}

第二步:在spring配置文件头中添加命名空间及描述

xml代码:

第三步:在spring配置文件中配置定时任务

xml代码:



   

你可能感兴趣的:(定时从ftp上下载txt文件到数据库中)