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;
}