diff --git a/pom.xml b/pom.xml index c2c8b07..65af4ca 100644 --- a/pom.xml +++ b/pom.xml @@ -182,6 +182,11 @@ saaj-api 1.3.5 + + com.jcraft + jsch + 0.1.55 + diff --git a/src/main/java/com/xydl/cac/util/SFTPTool.java b/src/main/java/com/xydl/cac/util/SFTPTool.java new file mode 100644 index 0000000..f131423 --- /dev/null +++ b/src/main/java/com/xydl/cac/util/SFTPTool.java @@ -0,0 +1,73 @@ +package com.xydl.cac.util; + +import com.jcraft.jsch.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.io.*; +import java.util.Properties; +import java.util.Vector; + +@Component +@Slf4j +public class SFTPTool { + Session session = null; + ChannelSftp sftp = null; + + /** + * 1. 第一步:连接sftp服务器 + * + * @param host 主机 + * @param port 端口 + * @param username 用户名 + * @param password 密码 + * @return + */ + public void connect(String host, int port, String username, String password) throws JSchException { + JSch jsch = new JSch(); + session = jsch.getSession(username, host, port); + session.setPassword(password); + Properties sshConfig = new Properties(); + sshConfig.put("StrictHostKeyChecking", "no"); + session.setConfig(sshConfig); + session.connect(); + Channel channel = session.openChannel("sftp"); + channel.connect(); + sftp = (ChannelSftp) channel; + } + + /** + * 3.最后一步:关闭 channel和session + */ + public void disconnect() { + try { + if (sftp != null && sftp.isConnected()) { + sftp.disconnect(); + } + } catch (Exception ignore) { + } + try { + if (session != null && session.isConnected()) { + session.disconnect(); + } + } catch (Exception ignore) { + } + } + + public void upload(String localFilePath, String remoteFilePath) throws Exception { + sftp.put(new FileInputStream(localFilePath), remoteFilePath); + } + + public void download(String remoteFilePath, String localFilePath) throws Exception { + sftp.get(remoteFilePath, new FileOutputStream(localFilePath)); + } + + public void delete(String remoteFilePath) throws SftpException { + sftp.rm(remoteFilePath); + } + + public Vector listFiles(String remotePath) throws SftpException { + return sftp.ls(remotePath); + } + +}