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);*/
//        
//    }

}

posted @ 2017-09-01 14:09  枫沫  阅读(841)  评论(1编辑  收藏  举报