定时从ftp上下载txt文件到数据库中
2018-01-11 15:09
381 查看
第一步:编写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, "GB2312"));
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代码:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:task="http://www.springframework.org/schema/task" http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">
第三步:在spring配置文件中配置定时任务
xml代码:
<task:scheduler id="myScheduler" pool-size="5" />
<task:scheduled-tasks scheduler="myScheduler">
<task:scheduled ref="BaseDataTask" method="BaseDataTask" cron="0 * 22 * * ?"/>
</task:scheduled-tasks>
@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, "GB2312"));
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代码:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:task="http://www.springframework.org/schema/task" http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">
第三步:在spring配置文件中配置定时任务
xml代码:
<task:scheduler id="myScheduler" pool-size="5" />
<task:scheduled-tasks scheduler="myScheduler">
<task:scheduled ref="BaseDataTask" method="BaseDataTask" cron="0 * 22 * * ?"/>
</task:scheduled-tasks>
相关文章推荐
- FTP定时批量下载文件(SHELL脚本及使用方法 )
- ftp下载,解析txt文件入库
- java 往ftp上上传跟下载txt文件
- Linux 下FTP定时执行批量下载文件
- 渗透通过ftp -s:filename.txt下载文件
- C# 利用FTP自动下载xml文件后利用 FileSystemWatcher 监控目录下文件变化并自动更新数据库
- linux定时任务创建和ftp下载文件
- 定时任务,定时下载FTP指定文件
- FTP定时批量下载文件(SHELL脚本及使用方法 ) (转)
- 定时FTP下载日志文件
- 在ARM板上ftp自动定时上传下载文件_0
- java定时备份mysql,定时ftp上传,下载,删除,重命名,文件(改)
- 使用Linux shell脚本实现FTP定时执行批量下载指定文件
- 在ARM板上ftp自动定时上传下载文件_0
- spring quartz定时下载ftp文件任务被阻塞
- Spring+Quartz实现定时从FTP服务器读取文件并存入Oracel数据库
- 从FTP下载文件后把数据放在数据库里.
- 现在我要写一个定时程序定时读取该目录下的所有txt文件到数据库,并把这些txt文件转移到另外一个目录
- linux下载ftp、http服务器文件的方法以及设置定时任务的方法
- ftp下载,TXT文件操作相关