1.添加pom依赖(基于springboot项目)
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.54</version>
</dependency>
2.application.yaml配置文件
sftp:
ip: 192.168.1.102
port: 22
username: admin
password: admin
root: /img #文件根目录
3.工具类
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;
import lombok.extern.slf4j.Slf4j;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
import java.util.concurrent.TimeUnit;
/**
*
*/
@Slf4j
public class SFTPUtil {
/**
* 下载重试次数
*/
private static final int DOWNLOAD_RETRY = 3;
/**
* 下载重试间隔时间 单位毫秒
*/
private static final long DOWNLOAD_SLEEP = 3 * 1000;
private static final SFTPUtil SFTP = new SFTPUtil();
private static ChannelSftp client;
private static Session session;
/**
* @return
*/
public static SFTPUtil getInstance() {
return SFTP;
}
/**
* 获取SFTP连接
*
* @param username
* @param password
* @param ip
* @param port
* @return
*/
synchronized public ChannelSftp makeConnection(String username, String password, String ip, int port) {
if (client == null || session == null || !client.isConnected() || !session.isConnected()) {
try {
JSch jsch = new JSch();
session = jsch.getSession(username, ip, port);
if (password != null) {
session.setPassword(password);
}
Properti