java ftp 读取 txt文件_java通过ftp方式读取文件,并解析入库
对于自己是个总结,下次使用的时候直接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方式读取文件,并解析入库相关推荐
- java 下载zip文件_Java以压缩包方式下载文件
从云服务器上下载文件,以压缩包方式下载 以下载多个文件为例,需要导入zip4j的jar包,版本不要太高 public void downloadZip(List list, HttpServletRe ...
- java读取注册表_Java通过CMD方式读取注册表任意键值对代码实践
需要读取如图所示注册表[HKEY_LOCAL_MACHINE\SOFTWARE\EasyDrv7]节点下的[DateTime]的值 直接上代码: package com.beibei.common.u ...
- java ftp 文件移动文件_java实现FTP远程文件移动(重命名、复制、拷贝)
首先就标题说明一点,java使用org.apache.commons.net.ftp.ftpclient包来操作FTP是很爽滴,但对远程文件操作,好像没有实现 复制文件的方法.我用的是文件移动(mov ...
- java ftp 中文上传_java实现ftp文件上传下载,解决慢,中文乱码,多个文件下载等问题...
//文件上传 public static boolean uploadToFTP(String url,int port,String username,String password,String ...
- java io流读取txt文件_Java使用IO流读取TXT文件
通过BufferedReader读取TXT文件 window系统默认的编码是GBK,而IDE的编码多数为UTF-8,如果没有规定new InputStreamReader(new FileInputS ...
- java操作文件_java操作FTP,实现文件上传下载删除操作
上传文件到FTP服务器: /** * Description: 向FTP服务器上传文件 * @param url FTP服务器hostname * @param port FTP服务器端口,如果默认端 ...
- java 读取1m文件_java的FileInputStream类读取文件
package net.csdn.InputStream; import java.io.File; import java.io.FileInputStream; import java.io.Fi ...
- java 一行行读取文件_Java中按行读取文件
本文译自Java read a file line by line – How Many Ways? 转载请注明出处. Java中的I/O类非常多,什么时候该用什么类经常让人困惑.下面两段代码展示了如 ...
- java 读取txt乱码_java 逐行读取txt文本如何解决中文乱码
java读取txt文本中如含有中文,可能会出现乱码,解决方案是: 1.要统一编码,java工程的编码,txt文本编码,java工程中的java文本编码都统一为utf-8: 2.利用 InputStre ...
最新文章
- VS Code 常用插件推荐
- gdb调试caffe工程
- 四条命令搞定mysql主从
- My Appointment - Belonging to me, Search by team, Search by group
- Zabbix RCE with API JSON-RPC
- springboot 创建地址_使用 SpringBoot Admin监控Spring Boot 服务
- matlab中sum(w.),matlab中sum
- 根据大小分割大文本_值得一看的文本检测方法
- 获取SQL-SERVER数据库insert into操作的主键返回值
- java opencv gamma_OpenCV函数cvAddWeighted调整alpha和gamma值 | 学步园
- 淘宝x-sign算法demo示例
- 移动流量转赠给好友_手机包月流量用不完:教你如何转赠给好友使用
- Java实现 计算数的平方根
- Runtime.getRuntime.exec的陷阱
- Gym-101502J(取数博弈+dp)
- JavaScript-function函数
- 华为麒麟实现跨越式发展 原来背后高人指点
- 约瑟夫环问题(丢手绢)
- 夏天地板保养的注意事项
- 看了360与金山网盾的争执,我有几点疑惑....
热门文章
- 2011年吉林大学计算机研究生机试真题
- POJ 2312 Battle City 优先队列+BFS
- vc++获取网页源码之使用import+接口方式
- C/C++网络编程中的TCP保活
- Knockoutjs 实践入门 (2) 绑定事件
- VBA实战技巧精粹012:查找指定目录下的指定文件及Dir函数用法
- 如果爱情不会让人受伤
- SQL中条件和比较关键字Case的使用方法(case的结果就是得到了一个值)
- 【练习题】构造方法 编写Java程序,模拟简单的计算器。
- [LeetCode] Invert Binary Tree - 二叉树翻转系列问题