SFTP工具类
package com.fastech.monitor_ui.util;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Field;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.zip.GZIPInputStream;
import org.apache.commons.collections.map.HashedMap;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import com.fastech.util.SftpConnection;
import com.fastech.util.SftpConnectionPool;
import com.jcraft.jsch.ChannelSftp;
import sun.net.ftp.impl.FtpClient;
public class ReadFileData {
/**
* 链接服务器
* */
public String connectServer(String ip, int port, String user, String password, String path,String filename){
SftpConnectionPool sftpPool = SftpConnectionPool.getInstance();
SftpConnection sftpConnection = sftpPool.getFtpConnecttion(ip,user,password,port);
ChannelSftp sftp = (ChannelSftp) sftpConnection.getChannel();
String result=null;
String ss=null;
String pathgen=System.getProperty("user.dir");
String saveFile=pathgen+"\\upload";
//String saveFile="upload";
try {
sftpConnection.download(path, filename, saveFile, sftp);
//result=readFile(saveFile+"\\"+filename);
deleteFile(saveFile+"\\"+filename);
//ss=sftpConnection.loadStream2String(path,filename, sftp);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
//return null;
}
public void deleteFile(String pash){
// 根据路径获取文件对象
File file = new File(pash);
// 判断文件是否存在
if (file.exists()) {
// 文件删除
file.delete();
}
}
public List<Map<String, Object>> putInStrage(String result,Class<?> classname) throws FileNotFoundException{
//String result=readFile(urlString);
String[] dataline=result.split("\n");
List<Map<String, Object>> listmap=new ArrayList<Map<String,Object>>();
List<String> resultlist=getField(classname);
for(int i=0;i<dataline.length;i++){
if(dataline[i].length()!=0&&dataline[i]!=null&&!"".equals(dataline[i].trim())){
Map<String, Object> mapp=new HashedMap();
String [] datastring=dataline[i].split("@#");
for(int j=0;j<datastring.length&&j<resultlist.size();j++){
mapp.put(resultlist.get(j),datastring[j]);
}
listmap.add(mapp);
}else{
continue;
}
}
return listmap;
}
public void getFiel(String logString){
String path="192.168.0.204";
HttpClient client =new DefaultHttpClient();
HttpPost post=new HttpPost(path);
}
FtpClient ftpClient;
/**
* connectServer
* 连接ftp服务器
* @throws java.io.IOException
* @param path 文件夹,空代表根目录
* @param password 密码
* @param user 登陆用户
* @param server 服务器地址
*/
/*public void connectServer(String server, String user, String password, String path)
throws IOException
{
// server:FTP服务器的IP地址;user:登录FTP服务器的用户名
// password:登录FTP服务器的用户名的口令;path:FTP服务器上的路径
ftpClient = new FtpClient();
ftpClient.openServer(server);
ftpClient.login(user, password);
//path是ftp服务下主目录的子目录
if (path.length() != 0) ftpClient.cd(path);
//用2进制上传、下载
ftpClient.binary();
}
*/
private Object getValue(String fieldname,String value, Class<?> classname) {
Object valuetype=value;
Class c=classname;
Field field = null;
try {
field = c.getDeclaredField(fieldname.toUpperCase());
} catch (NoSuchFieldException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (SecurityException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}//获取字段
String type = field.getGenericType().toString();
if (type.equals("class java.lang.String")){
field.setAccessible(true);
if(value!=null){
valuetype = value.replaceAll("\r|\n", "");
}else{
valuetype=value;
}
}else if(type.equals("int")){
if(value == null||value.trim().length()==0){
value = "0";
}
field.setAccessible(true);
valuetype=Integer.valueOf(value);
}else if(type.equals("long")){
if(value == null||value.trim().length()==0){
value = "0";
}
field.setAccessible(true);
valuetype=Long.valueOf(value.trim());//为字段赋值
}else if("double".equals(type)){
if(value == null||value.trim().length()==0){
value = "0";
}
field.setAccessible(true);
valuetype=Double.valueOf(value);
}else if(type.equals("class java.util.Date")){
Date date = new Date();
if(value==null||value.trim().length()==0){
date = null;
}else{
value = value.replaceAll("\n","");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
field.setAccessible(true);
try {
date = sdf.parse(value.trim());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
valuetype=date;//为字段赋值
}
return valuetype;
}
public List<String> getField(Class<?> classname){
List<String> resultlist=new ArrayList<>();
Field[] fields=classname.getDeclaredFields( );
for ( Field field : fields ){
resultlist.add(field.getName()) ;
}
return resultlist;
}
// public static void main(String[] args) throws IOException, ClassNotFoundException {
// /*ReadFileData rfd=new ReadFileData();
// String path="upload/d_rnt_irm_iv_mscpool_d_20170619000000_20170619000000-0.csv";
// rfd.putInStrage(path,D_RNT_IRM_IV_MSCPOOL_D.class);*/
// //rfd.getField(D_RNT_IRM_IV_MSCPOOL_D.class);
// /*String path="upload/d_rnt_irm_iv_hlr_d_20170619000000_20170619000000-0.csv.gz";
// ReadFileData rfd=new ReadFileData();
// String result=rfd.readFile(path);
// System.out.println(result);*/
// //String ss=";;;;";
// //String logstring="2017-06-23 12:08:18.994 DEBUG 24818 --- [nio-8022-exec-1] c.f.monitor.controller.AlarmController : msgContentBody is: {"DataCatalog":"d.rnt.irm.iv.hlr.d","SystemID":"ODC","SessionID":"d491c7d0-b2a7-47f4-a56c-2cc9d037f84e","ConnectionString":"ftp://gxpt:dnt@123@10.78.134.83:21/","Path":"/ds/re/ba/exchange","userName":"gxpt","password":"dnt@123","FileList":"d_rnt_irm_iv_hlr_d_20170623000000_20170623000000-0.csv.gz","files":[{"recordCount":15,"FileSize":17059,"fileName":"d_rnt_irm_iv_hlr_d_20170623000000_20170623000000-0.csv.gz","IsCompressed":"true","FieldSeparator":"@#"}]}";
// //System.out.println(ss.split(";").length);
// //Map<String,Object> logstring1="{'DataCatalog':'d.rnt.irm.iv.hlr.d','SystemID':'ODC','SessionID':'b376a80d-ba9d-4935-b997-f6a3157b9257','ConnectionString':'ftp://gxpt:dnt@123@10.78.134.83:21/','Path':'/ds/re/ba/exchange','userName':'gxpt','password':'dnt@123','FileList':'d_rnt_irm_iv_hlr_d_20170623000000_20170623000000-end.csv.gz','files':[{'recordCount':0,'FileSize':0,'fileName':'d_rnt_irm_iv_hlr_d_20170623000000_20170623000000-end.csv.gz','IsCompressed':'true','FieldSeparator':'@#'}]}";
// //String logstring="{'DataCatalog':'d.rnt.irm.iv.hlr.d','SystemID':'ODC','SessionID':'b376a80d-ba9d-4935-b997-f6a3157b9257','ConnectionString':'192.168.0.205','Path':'/ds/re/ba/exchange','userName':'root','password':'fastech!QAZ','FileList':'d_rnt_irm_iv_hlr_d_20170619000000_20170619000000-0.csv.gz','files':[{'recordCount':0,'FileSize':0,'fileName':'d_rnt_irm_iv_hlr_d_20170623000000_20170623000000-end.csv.gz','IsCompressed':'true','FieldSeparator':'@#'}]}";
// /*String[] mapString=logstring.split(",");
// List<Map<String, String>> listmap=new ArrayList<>();
// Map<String,String> strMap=new HashMap<>();
// for(int i=0;i<mapString.length;i++){
// String[] string=mapString[i].split(":");
// strMap.put(string[0],string[1]);
// }*/
// String logstring="{'DataCatalog':'d.rnt.irm.iv.hlr.d','SystemID':'ODC','SessionID':'b376a80d-ba9d-4935-b997-f6a3157b9257','ConnectionString':'192.168.0.205','Path':'/ds/re/ba/exchange','userName':'root','password':'fastech!QAZ','FileList':'d_rnt_irm_iv_hlr_d_20170619000000_20170619000000-0.csv.gz','files':[{'recordCount':0,'FileSize':0,'fileName':'d_rnt_irm_iv_hlr_d_20170623000000_20170623000000-end.csv.gz','IsCompressed':'true','FieldSeparator':'@#'}]}";
// Map<String,Object> strMap=new HashMap<>();
// strMap=JsonUtil.jsonToMap(logstring);
// String ip=strMap.get("ConnectionString").toString();
// String username=strMap.get("userName").toString();
// String password=strMap.get("password").toString();
// String path="/data"+strMap.get("Path").toString();
// String filename=strMap.get("FileList").toString();
// if(filename.endsWith("-0.csv.gz")){
// String classname=filename.substring(0,filename.length()-39).toUpperCase();
// Class clazz = Class.forName("D_RNT_IRM_IV_HLR_D");
// int port=22;
// ReadFileData rfd=new ReadFileData();
// String result=rfd.connectServer(ip,port,username, password, path,filename);
// rfd.putInStrage(result, clazz);
// }
//
// // List<Map<String, Object>> files=(List<Map<String, Object>>) strMap.get("files");
// //String fieldSeparator=strMap.get("files").toString();
// System.out.println(ip+"\n"+username+"\n"+password+"\n"+path+"\n"+filename);
// /*ReadFileData rfd=new ReadFileData();
// String ip="192.168.0.205";
// String username="root";
// String password="fastech!QAZ";
// String path="/data/ds/re/ba/exchange";
// String filename="d_rnt_irm_iv_hlr_d_20170619000000_20170619000000-0.csv.gz";
// int port=22;
// rfd.connectServer(ip,port,username, password, path,filename);*/
//
// }
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下