{
FTPClient ftpClient = new FTPClient();
try {
//生成文件名(我这里是生成了具体的文件夹名,不知道的话可以遍历取)
Calendar cal=Calendar.getInstance();
cal.add(Calendar.DATE,-1);
Date date = cal.getTime();
String fileName = "test"+ DateUtils.format(date,"yyyyMMdd") + ".txt";
//连接ftp服务器
ftpClient.setConnectTimeout(1000 * 30);
ftpClient.connect(host);
ftpClient.login(userName,passWord);
//这个要加不然会出现一个问题,好像是乱码的问题导致找不到对应的文件
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
//获取响应code,连接失败就关闭
int replyCode = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(replyCode)) {
ftpClient.disconnect();
}
//这个要加不然会出现一个问题,好像是乱码的问题导致找不到对应的文件
ftpClient.enterLocalPassiveMode();
//获取文件流
InputStream is = ftpClient.retrieveFileStream(fileName);
//使用字节流处理
BufferedReader br = new BufferedReader(new InputStreamReader(is));
//将每行数据放入list
List<Map<String,Object>> list = new ArrayList<>();
String s;
int line = 1;
String[] keys = null;
//不为空就一直读,其中要跳过不要的
while((s = br.readLine()) != null) {
if (line <= 2) {
if(line == 2)keys = s.split("\\|");
line++;
continue;
}
if (s.contains("111") || s.contains("111")) continue;
//切割str
String[] values = s.split("\\|");
Map<String,Object> record = new HashMap<>();;
for (int i = 0; i < values.length; i++) {
record.put(StringUtil.trimAll(keys[i]),StringUtil.trimAll(values[i]));
}
list.add(record);
}
//遍历插入数据库
for (Map<String,Object> tradeRecord : list){
//这里写自己的业务逻辑
}
//关闭流
br.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (ftpClient.isConnected()) {
try {
//关闭ftp连接
ftpClient.disconnect();
} catch (IOException ioe) {
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/107530.html