SFTP下载多文件

   private List<String> dowloadFiles(String settleDate, String localPath) {
        String url ="";
        String userName = "";
        String password = "";
        String port ="";
        String remotePath =""; // /<金融机构编码>/<yyyymmdd>/
        SftpUtils ssh = new SftpUtils(url, Integer.valueOf(port), userName,password);
        List<String> filenames = new ArrayList<String>();
        Vector v;
        try {
            v = ssh.listFiles(remotePath);
            if (v.size() > 0) {
                logger.info("文件下载个数不为零,开始下载...fileSize=" + (v.size()-2));
                Iterator it = v.iterator();
                while (it.hasNext()) {
                    LsEntry entry = (LsEntry) it.next();
                    String filename = entry.getFilename();
                    SftpATTRS attrs = entry.getAttrs();
                    if (!attrs.isDir()) {
                            ssh.downFileWithoutClose(remotePath + filename,localPath,filename);
                            filenames.add(filename);
                    }
                }
            }
        } catch (SftpException | PaymentException e) {
            e.printStackTrace();

}

public File downFileWithoutClose(String remoteFile, String localPath, String localName) throws PaymentException {
        logger.info("SFTP文件下载,本地路径{},远程路径{}", localPath, remoteFile);
        FileOutputStream output;
        File localFile = null;
        if (sftp != null && sftp.isConnected()) {
            try {
                // 判断远程文件是否存在
                try {
                    sftp.ls(remoteFile);
                } catch (SftpException e) {
                    if (sftp.SSH_FX_NO_SUCH_FILE == e.id) {
                        logger.error("SFTP远程文件不存在!");
                        throw new PaymentException(ConstantsPaymentRetCode.CHECK_FILE_ERROR_DOWNLOAD);
                    } else {
                        throw e;
                    }
                }

                // 判断本地文件夹是否方存在
                File localDir = new File(localPath);
                if (!localDir.exists()) {
                    localDir.mkdirs();
                    logger.info("SFTP本地文件夹不存在,创建本地文件夹");
                }

                localFile = new File(localPath + localName);
                output = new FileOutputStream(localFile);
                sftp.get(remoteFile, output);
                output.close();
            } catch (IOException e) {
                logger.error(e.getMessage());
            } catch (SftpException e) {
                logger.error(e.getMessage());
            } 
        }

        return localFile;
    }

        } finally {
            ssh.close();
        }

        return filenames;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值