对于自己是个总结,下次使用的时候直接copy,要注意的地方是ftp访问文件的方式,访问的是ftp用户的home目录,而不是从绝对路径访问。

private final static String DELETEUSER = "delete from customermanager_user where cmanagerno in ";

private final static String QUERYUSER = "select cmanagerno from customermanager_user where cmanagerno in ";

private final static String INSERTUSER = "insert into customermanager_user(cmanagerno, cmanagercity, cmanagercontry, cmanagername, cmanagercontact, cmanagerstatus) values(?,?,?,?,?,?)";

private CustomManagerJobDAO managerJobDAO;

public CustomManagerJobDAO getManagerJobDAO() {

return managerJobDAO;

}

public void setManagerJobDAO(CustomManagerJobDAO managerJobDAO) {

this.managerJobDAO = managerJobDAO;

}

/**

* customermanager_group 表增删查

*/

private final static String DELETEGROUP = "delete from customermanager_group where id in ";

private final static String QUERYGROUP = "select id from customermanager_group where id in ";

private final static String INSERTGROUP = "insert into customermanager_group(id, cmgroupno, cmgroupcity, cmgroupcontry, cmgroupcustomername, cmgroupcorno, cmgroupcoradd, cmgroupcustomertype, cmgroupiffirst, cmgroupcustomerlevel, cmgroupcontact, cmgroupslalevel, cmgroupaddress, cmgroupsatus) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

private static Integer file1length = Integer.valueOf(6);

private static Integer file2length = Integer.valueOf(14);

private final static String REMOVEFLAG = "1";

private final static String UPDATEFLAG = "0";

private List removekeylist = new LinkedList();

private List insertkeylist = new LinkedList();

private List insertlist = new LinkedList();

static {

String file1 = StaticMethod.nullObject2String(XmlManage.getFile(

"/config/customanager-ftp-boss.xml").getProperty("file1length"));

if (file1 != null && file1.length() >= 0) {

file1length = Integer.valueOf(file1);

}

String file2 = StaticMethod.nullObject2String(XmlManage.getFile(

"/config/customanager-ftp-boss.xml").getProperty("file2length"));

if (file1 != null && file2.length() >= 0) {

file2length = Integer.valueOf(file2);

}

}

public void parseData(String filepath) {

int table1size = file1length.intValue();

int table2size = file2length.intValue();

int count = 1;

try {

long begintime = System.currentTimeMillis();

URL url = new URL(filepath);

URLConnection urlconn = url.openConnection();

BufferedReader br = new BufferedReader(new InputStreamReader(urlconn.getInputStream()));

String line = null;

String keyflag = null; // 移除和删除标记

while ((line = br.readLine()) != null) {

count++;

String[] fileds = line.split("\\|");

if (table1size == fileds.length) {

keyflag = fileds[table1size - 1];

if (REMOVEFLAG.equals(keyflag)) {

removekeylist.add(fileds[0]);

} else if (UPDATEFLAG.equals(keyflag)) {

insertkeylist.add(fileds[0]);

fileds = changeAreaNametoId(fileds);

insertlist.add(fileds);// 再把所有数组给存起来

}

} else if (table2size == fileds.length) {

keyflag = fileds[table2size - 1];

if (REMOVEFLAG.equals(keyflag)) {

removekeylist.add(fileds[0]);

} else if (UPDATEFLAG.equals(keyflag)) {

insertkeylist.add(fileds[0]);

fileds = changeAreaNametoId(fileds);

insertlist.add(fileds);// 再把所有数组给存起来

}

}

if (count % 5000 == 0) {

queryAndDelete(removekeylist, insertlist); // 先查一把!然后再删

queryAndInsert(insertkeylist, insertlist);// 先查一把!然后再新增

removekeylist.clear();

insertkeylist.clear();

insertlist.clear();

}

queryAndDelete(removekeylist, insertlist); // 先查一把!然后再删

queryAndInsert(insertkeylist, insertlist);// 先查一把!然后再新增

removekeylist.clear();

insertkeylist.clear();

insertlist.clear();

}

br.close();

long endtime = System.currentTimeMillis();

System.out.println((endtime - begintime) / 3600);

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

public void getFileByFtp() {

String ftpserver = StaticMethod.nullObject2String(XmlManage.getFile("/config/customanager-ftp-boss.xml").getProperty("ftpserver"));

String userLogin = StaticMethod.nullObject2String(XmlManage.getFile("/config/customanager-ftp-boss.xml").getProperty("ftpuserLogin"));

String pwdLogin = StaticMethod.nullObject2String(XmlManage.getFile("/config/customanager-ftp-boss.xml").getProperty("ftppwdLogin"));

String serverPath = StaticMethod.nullObject2String(XmlManage.getFile("/config/customanager-ftp-boss.xml").getProperty("ftpserverPath"));

try {

// ftp服务器上下载每天的工单流水文件

String retMessage = connectToFtpServer(ftpserver, userLogin,

pwdLogin);

if (!retMessage.equals("connect success")) {

System.out.println("下载时文件时无法和FTP服务器连接");

}

String filename = StaticMethod.getYYYYMMDD(StaticMethod

.getLocalString(-1));

System.out.println("filename===" + filename);

String filepath1 = "ftp://" + userLogin + ":" + pwdLogin + "@"

+ ftpserver + serverPath + filename + "_001.txt";

String filepath2 = "ftp://" + userLogin + ":" + pwdLogin + "@"

+ ftpserver + serverPath + filename + "_002.txt";

System.out.println("path===" + filepath1);

URL url = new URL(filepath1);

URLConnection urlconn = url.openConnection();

BufferedReader br = new BufferedReader(new InputStreamReader(

urlconn.getInputStream()));

String line = null;

while ((line = br.readLine()) != null) {

System.out.println("line======" + line);

}

parseData(filepath1);

parseData(filepath2);

br.close();

closeFtpConnect();

} catch (MalformedURLException e1) {

e1.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* 把地市名称换成id

*

* @param keylist

*/

public String[] changeAreaNametoId(String[] records) {

if (file1length.intValue() == records.length) { // 数组长度为6,为第一张表

records[1] = getAreaid(records[1]);

} else if (file2length.intValue() == records.length) {

records[2] = getAreaid(records[2]);

}

return records;

}

/**

* 对数据进行查询,如果存在则删除

*

* @param keylist

*/

public void queryAndDelete(List keylist, List datalist) {

String sql = null;

String[] records = null;

if (datalist != null && datalist.size() > 0) {

records = (String[]) datalist.get(0);

}

List retlist = null;

try {

if (file1length.intValue() == records.length) { // 数组长度为6,为第一张表

sql = getExecuteSql(QUERYUSER, keylist);

retlist = this.getManagerJobDAO().getKeyList(sql); // 根据key把库中已经存在的记录查出来。

if (retlist != null && retlist.size() > 0) {

sql = getExecuteSql(DELETEUSER, retlist); // 组装成需要的sql

System.out.println("delete id from customermanager_user where flag = 1:===" + retlist);

this.getManagerJobDAO().delteRecord(sql);// 根据key把库中已经存在的删除

}

} else if (file2length.intValue() == records.length) {

sql = getExecuteSql(QUERYGROUP, keylist);

retlist = this.getManagerJobDAO().getKeyList(sql); // 根据key把库中已经存在的记录查出来。

if (retlist != null && retlist.size() > 0) {

sql = getExecuteSql(DELETEGROUP, retlist);

System.out.println("delete id from customermanager_group where flag = 1 ===="+ sql);

this.getManagerJobDAO().delteRecord(sql);

}

}

} catch (SQLException e) {

e.printStackTrace();

}

}

public void queryAndInsert(List keylist, List datalist) {

String sql = null;

String[] records = null;

if (datalist != null && datalist.size() > 0) {

records = (String[]) datalist.get(0);

}

List retlist = new ArrayList();

try {

if (file1length.intValue() == records.length && retlist != null) { // 数组长度为6,为第一张表

sql = getExecuteSql(QUERYUSER, keylist);

retlist = this.getManagerJobDAO().getKeyList(sql); // 根据key把库中已经存在的记录查出来。

if (retlist.size() == 0) { // 如果没有查到一个,则全部入库

this.getManagerJobDAO().insertTable1(INSERTUSER, datalist); // 把所有字段全部入库

} else {

sql = getExecuteSql(DELETEUSER, retlist); // 如果存在重复,则更新和新增分开操作

System.out.println("delete id from customermanager_user where flag = 1 ===="+ retlist);

this.getManagerJobDAO().delteRecord(sql);// 根据key把库中已经存在的删除

System.out.println("insert * into customermanager_user where flag = 0 ===="+ datalist);

this.getManagerJobDAO().insertTable1(INSERTUSER, datalist); // 把所有字段全部入库

}

} else if (file2length.intValue() == records.length && retlist != null) {

sql = getExecuteSql(QUERYGROUP, keylist);

retlist = this.getManagerJobDAO().getKeyList(sql);

if (retlist.size() == 0) {

this.getManagerJobDAO().insertTable2(INSERTGROUP, datalist);

} else {

sql = getExecuteSql(DELETEGROUP, retlist);

System.out.println("delete id from customermanager_group where flag = 1 ===="+ retlist);

this.getManagerJobDAO().delteRecord(sql);

System.out.println("insert * into customermanager_group where flag = 0 ===="+ datalist);

this.getManagerJobDAO().insertTable2(INSERTGROUP, datalist);

}

}

} catch (SQLException e) {

e.printStackTrace();

}

}

public static String getExecuteSql(final String querySql, List retList) {

String record = null;

String keys = null;

StringBuffer sqlsb = new StringBuffer();

for (int i = 0; i < retList.size(); i++) {

keys = StaticMethod.nullObject2String(retList.get(i));

sqlsb.append("'").append(keys).append("',");

}

record = sqlsb.toString();

String sqlwhere = record.substring(0, record.lastIndexOf(","));

return querySql + "(" + sqlwhere + ")";

}

public Logger logger = Logger.getLogger(this.getClass());

FtpClient ftpClient=null;

/*

* 获取FTP服务

*/

public String connectServer( String ip, int port, String user,

String password, String path) {

String returnResult = "true";

try {

ftpClient = new FtpClient();

ftpClient.openServer(ip, port);

ftpClient.login(user, password);

if (path.length() != 0)

ftpClient.cd(path);

ftpClient.binary();

} catch (IOException ex) {

returnResult = "false";

}

return returnResult;

}

private String connectToFtpServer(String ftpserver, String userLogin,

String pwdLogin) {

FtpClient fc = new FtpClient();

if ((ftpserver == null) || (ftpserver.equals("")))

return "FTP服务器名设置不正确!";

try {

fc.openServer(ftpserver);

fc.login(userLogin, pwdLogin);

fc.binary();

} catch (FtpLoginException e) {

return "没有与FTP服务器连接的权限,或用户名密码设置不正确!";

} catch (IOException e) {

return "与FTP服务器连接失败!";

} catch (SecurityException e) {

return "没有权限与FTP服务器连接";

}

return "connect success";

}

/*

* 关闭FTP

*/

public void closeFtpConnect() {

try {

ftpClient.closeServer();

} catch (IOException ex) {

System.out.println("关闭时出错======:"+ex.getMessage());

}

}

}

java ftp 读取 txt文件_java通过ftp方式读取文件,并解析入库相关推荐

  1. java 下载zip文件_Java以压缩包方式下载文件

    从云服务器上下载文件,以压缩包方式下载 以下载多个文件为例,需要导入zip4j的jar包,版本不要太高 public void downloadZip(List list, HttpServletRe ...

  2. java读取注册表_Java通过CMD方式读取注册表任意键值对代码实践

    需要读取如图所示注册表[HKEY_LOCAL_MACHINE\SOFTWARE\EasyDrv7]节点下的[DateTime]的值 直接上代码: package com.beibei.common.u ...

  3. java ftp 文件移动文件_java实现FTP远程文件移动(重命名、复制、拷贝)

    首先就标题说明一点,java使用org.apache.commons.net.ftp.ftpclient包来操作FTP是很爽滴,但对远程文件操作,好像没有实现 复制文件的方法.我用的是文件移动(mov ...

  4. java ftp 中文上传_java实现ftp文件上传下载,解决慢,中文乱码,多个文件下载等问题...

    //文件上传 public static boolean uploadToFTP(String url,int port,String username,String password,String ...

  5. java io流读取txt文件_Java使用IO流读取TXT文件

    通过BufferedReader读取TXT文件 window系统默认的编码是GBK,而IDE的编码多数为UTF-8,如果没有规定new InputStreamReader(new FileInputS ...

  6. java操作文件_java操作FTP,实现文件上传下载删除操作

    上传文件到FTP服务器: /** * Description: 向FTP服务器上传文件 * @param url FTP服务器hostname * @param port FTP服务器端口,如果默认端 ...

  7. java 读取1m文件_java的FileInputStream类读取文件

    package net.csdn.InputStream; import java.io.File; import java.io.FileInputStream; import java.io.Fi ...

  8. java 一行行读取文件_Java中按行读取文件

    本文译自Java read a file line by line – How Many Ways? 转载请注明出处. Java中的I/O类非常多,什么时候该用什么类经常让人困惑.下面两段代码展示了如 ...

  9. java 读取txt乱码_java 逐行读取txt文本如何解决中文乱码

    java读取txt文本中如含有中文,可能会出现乱码,解决方案是: 1.要统一编码,java工程的编码,txt文本编码,java工程中的java文本编码都统一为utf-8: 2.利用 InputStre ...

最新文章

  1. VS Code 常用插件推荐
  2. gdb调试caffe工程
  3. 四条命令搞定mysql主从
  4. My Appointment - Belonging to me, Search by team, Search by group
  5. Zabbix RCE with API JSON-RPC
  6. springboot 创建地址_使用 SpringBoot Admin监控Spring Boot 服务
  7. matlab中sum(w.),matlab中sum
  8. 根据大小分割大文本_值得一看的文本检测方法
  9. 获取SQL-SERVER数据库insert into操作的主键返回值
  10. java opencv gamma_OpenCV函数cvAddWeighted调整alpha和gamma值 | 学步园
  11. 淘宝x-sign算法demo示例
  12. 移动流量转赠给好友_手机包月流量用不完:教你如何转赠给好友使用
  13. Java实现 计算数的平方根
  14. Runtime.getRuntime.exec的陷阱
  15. Gym-101502J(取数博弈+dp)
  16. JavaScript-function函数
  17. 华为麒麟实现跨越式发展 原来背后高人指点
  18. 约瑟夫环问题(丢手绢)
  19. 夏天地板保养的注意事项
  20. 看了360与金山网盾的争执,我有几点疑惑....

热门文章

  1. 2011年吉林大学计算机研究生机试真题
  2. POJ 2312 Battle City 优先队列+BFS
  3. vc++获取网页源码之使用import+接口方式
  4. C/C++网络编程中的TCP保活
  5. Knockoutjs 实践入门 (2) 绑定事件
  6. VBA实战技巧精粹012:查找指定目录下的指定文件及Dir函数用法
  7. 如果爱情不会让人受伤
  8. SQL中条件和比较关键字Case的使用方法(case的结果就是得到了一个值)
  9. 【练习题】构造方法 编写Java程序,模拟简单的计算器。
  10. [LeetCode] Invert Binary Tree - 二叉树翻转系列问题