Java 操作SFTP文件工具栏

时间:2025-03-10 21:31:56
package ;

import ;
import ;
import ;
import ;
import ;
import ;
import ;

import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;

import ;
import ;
import ;
import ;

import ;

import ;
import ;

import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;

/**
 * sftp工具类
 * 
 * @author xxx
 * @date 2020-12-17
 * @time 下午3:57:44
 * @version 1.0
 */
public class SFTPUtils {

    private String host = ""; // 服务器连接ip
    private String username = ""; // 用户名
    private String password = ""; // 密码
    private int port = 22; // 端口号

    public SFTPUtils() {
    }

    public SFTPUtils(String host, int port, String username, String password) {
         = host;
         = username;
         = password;
         = port;
    }

    public SFTPUtils(String host, String username, String password) {
         = host;
         = username;
         = password;
    }

    /**
     * 连接sshSession
     */
    public Session sshSession() {
        Session sshSession = null;
        JSch jsch = new JSch();
        while (true) {
            try {
                (username, host, port);
                sshSession = (username, host, port);
                (password);
                // Properties sshConfig = new Properties();
                // ("StrictHostKeyChecking", "no");
                // ("kex", "diffie-hellman-group1-sha1");
                ("StrictHostKeyChecking", "no");
                // ("StrictHostKeyChecking", "no");
                // (sshConfig);
                ();
                return sshSession;
            } catch (Exception e) {
                // TODO Auto-generated catch block
                try {
                    (5000);
                } catch (InterruptedException e1) {
                    // TODO Auto-generated catch block
                    ();
                }
                ();

            }
        }
    }

    /**
     * sshSession通过sshSession连接ChannelSftp(SFTP)
     */
    public ChannelSftp connect(Session sshSession) {
        ChannelSftp sftp = null;
        Channel channel = null;
        while (true) {
            try {
                channel = ("sftp");
                ();
                sftp = (ChannelSftp) channel;
                Class cl = ;
                Field f1 =("server_version");
                (true);
                (sftp, 2); 
                ("gbk");
                return sftp;
            } catch (JSchException e) {
                try {
                    (5000);
                } catch (InterruptedException e1) {
                    // TODO Auto-generated catch block
                    ();
                }
                sshSession = sshSession();
                // TODO Auto-generated catch block
                ();
            } catch (SftpException e) {
                // TODO Auto-generated catch block
                try {
                    (5000);
                } catch (InterruptedException e1) {
                    // TODO Auto-generated catch block
                    ();
                }
                ();
            } catch (SecurityException e) {
                try {
                    (5000);
                } catch (InterruptedException e1) {
                    // TODO Auto-generated catch block
                    ();
                }
                // TODO Auto-generated catch block
                ();
            } catch (NoSuchFieldException e) {
                try {
                    (5000);
                } catch (InterruptedException e1) {
                    // TODO Auto-generated catch block
                    ();
                }
                // TODO Auto-generated catch block
                ();
            } catch (IllegalArgumentException e) {
                try {
                    (5000);
                } catch (InterruptedException e1) {
                    // TODO Auto-generated catch block
                    ();
                }
                // TODO Auto-generated catch block
                ();
            } catch (IllegalAccessException e) {
                try {
                    (5000);
                } catch (InterruptedException e1) {
                    // TODO Auto-generated catch block
                    ();
                }
                // TODO Auto-generated catch block
                ();
            }
        }
    }

    /**
     * 关闭ChannelSftp,Session连接
     */
    public void disconnect(ChannelSftp sftp, Session sshSession) {
        if (sftp != null) {
            if (()) {
                ();
            }
        }
        if (sshSession != null) {
            if (()) {
                ();
            }
        }
    }

    /**
     * 批量获取XML文件流
     * 
     * @param remotPath
     *            :远程下载目录(以路径符号结束,可以为相对路径eg:/assess/sftp/jiesuan_2/2014/)
     * @param indexOfFileName
     *            :获取某一天的文件(yyyyMMdd)
     * @param indexOfFileNameXiaJi
     *            :获取某一天的文件下级文件夹res或者req或者什么文件夹名
     * @param ctx
     * 
     * @param yinhang
     *            :银行简称以_符号结束(BOC_)
     * @param sftp
     *            :
     * @param sshSession
     *            :
     * @return filenames :文件名称以及文件流 (Map<String, InputStream>)
     */
    public Map<String, InputStream> batchDownLoadFileXml(String remotePath,
            String indexOfFileName, String indexOfFileNameXiaJi,
            String yinhang, Context ctx, ChannelSftp sftp, Session sshSession) {
        Map<String, InputStream> filenames = new HashMap<String, InputStream>();
        ;
        Vector v = listFiles(remotePath, sftp);
        // (remotePath);
        if (() > 0) {
            ("本次处理文件个数不为零,开始下载...fileSize=" + ());
            Iterator it = ();
            while (()) {
                LsEntry entry = (LsEntry) ();
                String filename = ();
                SftpATTRS attrs = ();
                if (!()) {
                    // boolean flag = false;

                    int lastIndexOf = 0;
                    if ((indexOfFileName) != -1) {
                        // String localFileName = + filename;
                        remoteZipToFile(remotePath + filename, remotePath,
                                sshSession);
                        lastIndexOf = (".");
                        Vector v1 = listFiles(remotePath + indexOfFileName
                                + "/" + indexOfFileNameXiaJi, sftp);
                        // (remotePath);

                        if (() > 0) {
                            
                            Iterator it1 = ();
                            List<String> allList = new ArrayList<String>();
                            List<String> dbList = dbList(remotePath,
                                    indexOfFileName, indexOfFileNameXiaJi,
                                    yinhang, "HIS\\|CUR\\", ctx, sshSession);
                            List<String> chaZhiList = null;
                            if (dbList != null) {
                                remoteZipToFileHouZhui(remotePath, indexOfFileName,
                                        indexOfFileNameXiaJi, "BAL", sshSession);
                                ("本次读取文件个数不为零,读取...fileSize="
                                        + ());
                                while (()) {
                                    LsEntry entry1 = (LsEntry) ();
                                    String filename1 = ();
                                    SftpATTRS attrs1 = ();
                                    if (!()) {
                                        int lastIndexOf1 = filename1
                                                .lastIndexOf(".");
                                        String suffix = filename1
                                                .substring(lastIndexOf1);
                                        if (().equals(".CUR")
                                                || ().equals(
                                                        ".HIS")) {
                                            (filename1);

                                        }
                                    }
                                }
                            }
                            if ("res".equals(indexOfFileNameXiaJi)) {
                                chaZhiList = getNeedAddOpenList(allList, dbList);
                            } else {
                                chaZhiList = allList;
                            }
                            InputStream is = null;
                            String filename1 = null;
                            for (int i = 0; i < (); i++) {
                                filename1 = (i);
                                while (true) {
                                    try {
                                        is = (remotePath
                                                + (0,
                                                        lastIndexOf) + "/"
                                                + indexOfFileNameXiaJi + "/"
                                                + filename1);
                                        break;
                                    } catch (SftpException e) {
                                        // TODO Auto-generated catch block
                                        try {
                                            (5000);
                                            sftp = connect(sshSession());
                                        } catch (Exception e1) {
                                            // TODO Auto-generated catch block
                                            ();
                                        }
                                        ();
                                    }
                                }
                                // TODO 编码定义
                                BufferedReader bre;
                                try {
                                    bre = new BufferedReader(
                                            new InputStreamReader(is, "GBK"));

                                    StringBuffer a = new StringBuffer();
                                    String str = "";
                                    // 循环读取,一次读取一行
                                    while ((str = ()) != null) {
                                        (str);
                                    }

                                    if (("<?xml") < 0) {
                                        a
                                                .insert(0,
                                                        "<?xml version=\"1.0\" encoding=\"GBK\"?>");
                                    }
                                    String a1 = ().replace("UTF-8",
                                            "GBK");
                                    a1 = ().replace("utf-8", "GBK");
                                    is = new ByteArrayInputStream(());
                                    (filename1, is);
                                } catch (UnsupportedEncodingException e1) {
                                    // TODO Auto-generated catch block
                                    ();
                                } catch (IOException e) {
                                    // TODO Auto-generated catch block
                                    ();
                                }
                                try {
                                    ();

                                } catch (IOException e) {
                                    // TODO Auto-generated catch
                                    // block
                                    ();
                                }
                            }
                        }
                        rm(remotePath + (0, lastIndexOf),
                                sshSession);
                        break;
                    }

                }

            }
        }
        return filenames;
    }

    /**
     * 判断list差值 :
     * 
     * @return filenames :文件名称以及文件流 (Map<String, InputStream>)
     */
    public List<String> getNeedAddOpenList(List<String> allList,
            List<String> dbList) {
        if (dbList != null && !()) {
            Map<String, String> dataMap = new HashMap<String, String>();
            for (String filename : dbList) {
                (filename, filename);

            }
            List<String> newList = new ArrayList<String>();
            for (String filename : allList) {
                if (!(filename)) {
                    (filename);
                }
            }
            return newList;
        } else {
            return allList;

        }

    }

    /**
     * 判断list差值
     * 
     * @param remotPath
     *            :远程下载目录(以路径符号结束,可以为相对路径eg:/assess/sftp/jiesuan_2/2014/)
     * @param indexOfFileName
     *            :某一天的文件夹(yyyyMMdd)
     * @param indexOfFileNameXiaJi
     *            :某一天的文件夹下级文件夹res或者req或者什么文件夹名
     * @param houZ*g
     *            :文件后缀名HIS\|CUR\
     * @param sshSession
     *            : :文件名称以及文件流 (Map<String, InputStream>)
     */
    public List<String> dbList(String remotePath, String indexOfFileName,
            String indexOfFileNameXiaJi, String yinHang, String houZ*g,
            Context ctx, Session sshSession) {
        int i = 4;
        int dbSum = 0;
        String tiaojian2 = "SUBSTR(cfyinhangfilename,2" + i + ",8)";
        if ("CMBC_".equals(yinHang)) {
            i = 5;
            tiaojian2 = "SUBSTR(cfyinhangfilename,2" + (i + 1) + ",8)";
        } else if ("CIB_".equals(yinHang)) {
            tiaojian2 = "SUBSTR(cfyinhangfilename,2" + (i + 1) + ",8)";
        }
        List dbList = null;
        try {
            IRowSet irfileName = (ctx,
                    "/*dialect*/ SELECT count(*) FROM CT_JIA_XMLFILENAME  where   SUBSTR(cfyinhangfilename,0,"
                            + i + ") = '" + yinHang + "'  and " + tiaojian2
                            + " ='" + indexOfFileName + "'  and CFzhuangtai = 1 ");
            while (()) {
                dbSum = (1);
            }
            if (dbSum != getHouZ*gFileSum(remotePath, indexOfFileName,
                    indexOfFileNameXiaJi, houZ*g, sshSession)) {
                dbList = new ArrayList();
                irfileName = DbUtil
                        .executeQuery(
                                ctx,
                                " /*dialect*/ SELECT SUBSTR(cfyinhangfilename,"+(i+ 1)+ ",100)  FROM CT_JIA_XMLFILENAME  where   SUBSTR(cfyinhangfilename,0,"
                                        + i + ") = '" + yinHang + "'  and "
                                        + tiaojian2 + " ='" + indexOfFileName
                                        + "' and CFzhuangtai = 1");
                while (()) {
                    ((1));
                }
                String logsql =" /*dialect*/ delete FROM CT_JIA_XMLLOG   where  cfyinhangfilename  in (SELECT cfyinhangfilename FROM CT_JIA_XMLFILENAME  " +
                "where   SUBSTR(cfyinhangfilename,0,"
                + i + ") = '" + yinHang + "'  and "
                + tiaojian2 + " ='" + indexOfFileName
                + "' and CFzhuangtai <>1 )" ;
                (
                        ctx,
                        logsql);
                
                try {
                    (5000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    ();
                }
                
                
                
                String filenamesql = " /*dialect*/ delete FROM CT_JIA_XMLFILENAME  where   SUBSTR(cfyinhangfilename,0,"
                    + i + ") = '" + yinHang + "'  and "
                    + tiaojian2 + " ='" + indexOfFileName
                    + "' and CFzhuangtai <>1 ";
                (
                        ctx,
                        filenamesql);
                return dbList;
            }else{
                return null;
                
            }
        } catch (BOSException e) {
            // TODO Auto-generated catch block
            ();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            ();
        }
        return dbList;

    }

    /**
     * 批量获取EXCEL文件流
     * 
     * @param remotPath
     *            :远程下载目录(以路径符号结束,可以为相对路径eg:/assess/sftp/jiesuan_2/2014/)
     * @param indexOfFileName
     *            :获取某一天的文件(yyyyMMdd)
     * @param indexOfFileNameXiaJi
     *            :获取某一天的文件下级文件夹res或者req或者什么文件夹名
     * @param ctx
     * 
     * @param yinhang
     *            :银行简称以_符号结束(BOC_)
     * @param sftp
     *            :
     * @param sshSession
     *            :
     * @return filenames :文件名称以及文件流 (Map<String, InputStream>)
     */
    public Map<String, Workbook> batchDownLoadFileexcel(String remotePath,
            String indexOfFileName, String indexOfFileNameXiaJi,
            ChannelSftp sftp, Session sshSession) {
        Map<String, Workbook> filenames = new HashMap<String, Workbook>();

        Vector v1 = listFiles(remotePath + "/" + indexOfFileName + "/"
                + indexOfFileNameXiaJi + "/", sftp);
        // remotePath +"/"+ indexOfFileName
        // + "/交易记录表");
        // /data/msxg
        // (remotePath);
        if (() > 0) {
            ("本次读取excel文件个数不为零,读取...fileSize=" + ());
            Iterator it1 = ();
            while (()) {
                LsEntry entry1 = (LsEntry) ();
                String filename1 = ();
                SftpATTRS attrs1 = ();
                if (!()) {
                    int lastIndexOf1 = (".");
                    String suffix = (lastIndexOf1);
                    if (().equals(".XLSX")
                            || ().equals(".XLS")) {
                        // remotePath+(0,
                        // lastIndexOf)+filename1;
                        InputStream is = null;
                        while (true) {
                            try {
                                is = (// "/data/msxg/"+filename1);
                                        remotePath + "/" + indexOfFileName
                                                + "/" + indexOfFileNameXiaJi
                                                + "/" + filename1);
                                break;
                            } catch (SftpException e) {
                                // TODO Auto-generated catch block
                                try {
                                    (5000);
                                    sftp = connect(sshSession());
                                } catch (Exception e1) {
                                    // TODO Auto-generated catch block
                                    ();
                                }
                                ();
                            }
                        }
                        Workbook wb1 = null;
                        try {
                            wb1 = (filename1, is);
                        } catch (IOException e1) {
                            // TODO Auto-generated catch block
                            ();
                        }
                        (filename1, wb1);

                        try {
                            ();

                        } catch (IOException e) {
                            // TODO Auto-generated catch
                            // block
                            ();
                        }
                    }

                }
            }
        }
        return filenames;
    }

    /**
     * 批量下载文件
     * 
     * @param remotPath
     *            :远程下载目录(以路径符号结束,可以为相对路径eg:/assess/sftp/jiesuan_2/2014/)
     * @param localPath
     *            :本地保存目录(以路径符号结束,D:\Duansha\sftp\)
     * @param del
     *            :下载后是否删除sftp文件
     * @return
     */
    public List<String> batchDownLoadFile(String remotePath, String localPath,
            boolean del, ChannelSftp sftp) {
        List<String> filenames = new ArrayList<String>();
        // connect();
        Vector v = listFiles(remotePath, sftp);
        // (remotePath);
        if (() > 0) {
            ("本次处理文件个数不为零,开始下载...fileSize=" + ());
            Iterator it = ();
            while (()) {
                LsEntry entry = (LsEntry) ();
                String filename = ();
                SftpATTRS attrs = ();
                if (!()) {
                    boolean flag = false;
                    String localFileName = localPath + filename;
                    // 三种情况
                    flag = downloadFile(remotePath, filename, localPath,
                            filename, sftp);
                    if (flag) {
                        (localFileName);
                        if (flag && del) {
                            deleteSFTP(remotePath, filename, sftp);
                        }

                    }
                }
            }
        }

        return filenames;
    }

    /*
     * 远程下载目录(以路径符号结束)
     * 
     * @param remoteFileName :下载文件名
     * 
     * @param localPath :本地保存目录(以路径符号结束)
     * 
     * @param localFileName :保存文件名
     * 
     * @return
     */
    public boolean downloadFile(String remotePath, String remoteFileName,
            String localPath, String localFileName, ChannelSftp sftp) {
        FileOutputStream fieloutput = null;
        try {
            // (remotePath);
            File file = new File(localPath + "/" + localFileName);
            if (!()) {
                mkdirs(localPath + localFileName);
            }
            fieloutput = new FileOutputStream(file);
            (remotePath + remoteFileName, fieloutput);
            return true;
        } catch (FileNotFoundException e) {
            ();
        } catch (SftpException e) {
            ();
        } finally {
            if (null != fieloutput) {
                try {
                    ();
                } catch (IOException e) {
                    ();
                }
            }
        }
        return false;
    }

    /**
     * 上传单个文件
     * 
     * @param remotePath
     *            :远程保存目录
     * @param remoteFileName
     *            :保存文件名
     * @param localPath
     *            :本地上传目录(以路径符号结束)
     * @param localFileName
     *            :上传的文件名
     * @return
     */
    public boolean uploadFile(String remotePath, String remoteFileName,
            String localPath, String localFileName, ChannelSftp sftp,
            Session sshSession) {
        FileInputStream in = null;
        try {
            createDir(remotePath, sftp, sshSession);
            File file = new File(localPath + localFileName);
            in = new FileInputStream(file);
            (in, remoteFileName);
            return true;
        } catch (FileNotFoundException e) {
            ();
        } catch (SftpException e) {
            ();
        } finally {
            if (in != null) {
                try {
                    ();
                } catch (IOException e) {
                    ();
                }
            }
        }
        return false;
    }

    /**
     * 批量上传文件
     * 
     * @param remotePath
     *            :远程保存目录
     * @param localPath
     *            :本地上传目录(以路径符号结束)
     * @param del
     *            :上传后是否删除本地文件
     * @return
     */
    public boolean bacthUploadFile(String remotePath, String localPath,
            boolean del, ChannelSftp sftp, Session sshSession) {
        try {
            connect(sshSession);
            File file = new File(localPath);
            File[] files = ();
            for (int i = 0; i < ; i++) {
                if (files[i].isFile()
                        && files[i].getName().indexOf("bak") == -1) {
                    if ((remotePath, files[i].getName(),
                            localPath, files[i].getName(), sftp, sshSession)
                            && del) {
                        deleteFile(localPath + files[i].getName());
                    }
                }
            }
            return true;
        } catch (Exception e) {
            ();
        }
        return false;

    }

    /**
     * 删除本地文件
     * 
     * @param filePath
     * @return
     */
    public boolean deleteFile(String filePath) {
        File file = new File(filePath);
        if (!()) {
            return false;
        }

        if (!()) {
            return false;
        }
        boolean rs = ();
        return rs;
    }

    /**
     * 创建目录
     * 
     * @param createpath
     * @return
     */
    public boolean createDir(String createpath, ChannelSftp sftp,
            Session sshSession) {
        try {
            if (isDirExist(createpath, sftp)) {
                (createpath);
                return true;
            }
            String pathArry[] = ("/");
            StringBuffer filePath = new StringBuffer("/");
            for (String path : pathArry) {
                if (("")) {
                    continue;
                }
                (path + "/");
                if (isDirExist((), sftp)) {
                    (());
                } else {
                    // 建立目录
                    (());
                    // 进入并设置为当前目录
                    (());
                }

            }
            (createpath);
            return true;
        } catch (SftpException e) {
            ();
        }
        return false;
    }

    /**
     * 判断目录是否存在
     * 
     * @param directory
     * @return
     */
    public boolean isDirExist(String directory, ChannelSftp sftp) {
        boolean isDirExistFlag = false;
        while (true) {
            try {

                SftpATTRS sftpATTRS = (directory);
                isDirExistFlag = true;
                return ();

            } catch (Exception e) {
                if (().toLowerCase().equals("no such file")||().toLowerCase().equals("failure")) {
                    return isDirExistFlag = false;
                } else {
                    try {
                        ();
                        (5000);
                        sftp = connect(sshSession());
                    } catch (Exception e1) {
                        // TODO Auto-generated catch block
                        ();
                    }
                }
            }
        }

    }

    /**
     * 删除stfp文件
     * 
     * @param directory
     *            :要删除文件所在目录
     * @param deleteFile
     *            :要删除的文件
     * @param sftp
     */
    public void deleteSFTP(String directory, String deleteFile, ChannelSftp sftp) {
        try {
            // (directory);
            (directory + deleteFile);
        } catch (Exception e) {
            ();
        }
    }

    /**
     * 如果目录不存在就创建目录
     * 
     * @param path
     */
    public void mkdirs(String path) {
        File f = new File(path);

        String fs = ();

        f = new File(fs);

        if (!()) {
            ();
        }
    }

    // 需要注意的是当删除某一目录时,必须保证该目录下没有其他文件才能正确删除,否则将删除失败。
    public static void deleteFolder(File folder) throws Exception {
        if (!()) {
            throw new Exception("文件不存在");
        }
        File[] files = ();
        if (files != null) {
            for (File file : files) {
                if (()) {
                    // 递归直到目录下没有文件
                    deleteFolder(file);
                } else {
                    // 删除
                    ();
                }
            }
        }
        // 删除
        ();

    }

    /**
     * 列出目录下的文件
     * 
     * @param directory
     *            :要列出的目录
     * @param sftp
     * @return
     * @throws SftpException
     */
    public Vector listFiles(String directory, ChannelSftp sftp) {
        Vector v = new Vector();

        while (true) {
            try {
                if (isDirExist(directory, sftp)) {
                    v = (directory);
                }
                return v;
            } catch (SftpException e) {
                // TODO Auto-generated catch block
                try {
                    (5000);
                    sftp = connect(sshSession());
                } catch (Exception e1) {
                    // TODO Auto-generated catch block
                    ();
                }
                ();
            }

        }
    }

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
         = host;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
         = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
         = password;
    }

    public int getPort() {
        return port;
    }

    public void setPort(int port) {
         = port;
    }

    /**
     * @Description:远程解压缩指定目录下的指定名字的文件
     * 
     * @param fileName
     *            :需要解压的文件名字
     * 
     * @param decpath
     *            :解压完成后的存放路径
     */
    public void remoteZipToFile(String fileName, String decpath,
            Session sshSession) {
        ("开始解压");
        runCmd("/data/rizhi/unzip-5.52/unzip -o " + fileName + "  -d /"
                + decpath + "/", sshSession);
        ("解压成功");

    }

    /**
     * @Description:远程删除目录
     * 
     * @param decpath
     *            :删除目录及以下文件
     */
    public void rm(String decpath, Session sshSession) {
        ("开始删除" + decpath);
        // ("rm -rf " + decpath);// 解压zip格式
        runCmd("rm -rf " + decpath, sshSession);
        ("删除" + decpath + "成功");
    }

    /**
     * 远程删除目录下后缀名为某个的文件
     * 
     * @param remotPath
     *            :远程下载目录(以路径符号结束,可以为相对路径eg:/assess/sftp/jiesuan_2/2014/)
     * @param indexOfFileName
     *            :某一天的文件夹(yyyyMMdd)
     * @param indexOfFileNameXiaJi
     *            :某一天的文件夹下级文件夹res或者req或者什么文件夹名
     * @param houZ*g
     *            :文件后缀名(BAL)
     * @param sshSession
     *            :
     * @return filenames :文件名称以及文件流 (Map<String, InputStream>)
     */
    public void remoteZipToFileHouZhui(String remotePath,
            String indexOfFileName, String indexOfFileNameXiaJi,
            String houZ*g, Session sshSession) {
        ("开始删除" + remotePath + indexOfFileName + "/"
                + indexOfFileNameXiaJi + " 目录下" + houZ*g + "文件 ");
        runCmd("find " + remotePath + indexOfFileName + "/"
                + indexOfFileNameXiaJi + " -name \"*." + houZ*g
                + "\" | xargs rm", sshSession);
        ("结束删除" + remotePath + indexOfFileName + "/"
                + indexOfFileNameXiaJi + " 目录下" + houZ*g + "文件,删除成功 ");
    }

    /**
     * 远程获取目录下后缀名为某几类类型的文件
     * 
     * @param remotPath
     *            :远程下载目录(以路径符号结束,可以为相对路径eg:/assess/sftp/jiesuan_2/2014/)
     * @param indexOfFileName
     *            :某一天的文件夹(yyyyMMdd)
     * @param indexOfFileNameXiaJi
     *            :某一天的文件夹下级文件夹res或者req或者什么文件夹名
     * @param houZ*g
     *            :文件后缀名HIS\|CUR\
     * @param sshSession
     *            :
     * @return fileSize :文件个数
     */
    public Integer getHouZ*gFileSum(String remotePath,
            String indexOfFileName, String indexOfFileNameXiaJi,
            String houZ*g, Session sshSession) {
        ("开始获取" + remotePath + indexOfFileName + "/"
                + indexOfFileNameXiaJi + " 目录下CUR,HIS文件个数 ");
        String fileSize = runCmd("find " + remotePath + indexOfFileName + "/"
                + indexOfFileNameXiaJi + " -type f -regex \".*\\.\\("
                + houZ*g + ")\"| wc -l", sshSession);
        ("结束获取" + remotePath + indexOfFileName + "/"
                + indexOfFileNameXiaJi + " 目录下CUR,HIS文件,个数为: " + fileSize);
        return (());

    }

    /**
     * 执行linux代码; :
     * 
     * @return filenames :文件名称以及文件流 (Map<String, InputStream>)
     */
    public String runCmd(String cmd, Session sshSession) {
        ChannelExec channelExec = null;
        InputStream in = null;
        while (true) {
            try {

                channelExec = (ChannelExec) ("exec");
                in = ();
                (cmd);
                ();
                String s = (in, "UTF-8");
                ("结果:" + s);
                ();
                return s;
            } catch (IOException e) {
                // TODO Auto-generated catch block
                ();
                return null;
            } catch (JSchException e) {
                sshSession = sshSession();
                // TODO Auto-generated catch block
                ();
            }
        }
    }

    /**
     * 获取文件大小 :
     * 
     * @return filenames :文件名称以及文件流 (Map<String, InputStream>)
     */
    public long getFileSize(String srcSftpFilePath, ChannelSftp sftp) {
        while (true) {
            try {
                SftpATTRS sftpATTRS = (srcSftpFilePath);
                long filesize = ();
                return filesize;
            } catch (Exception e) {
                // TODO Auto-generated catch block
                ();
                sftp = connect(sshSession());
            }
        }
    }

}