一、直接上干货
1.maven
<!-- sftp -->
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.54</version>
</dependency>
二、使用步骤
1.引入库
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.SftpException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Properties;
import java.util.Vector;
import lombok.extern.slf4j.Slf4j;
2.读入数据
@Slf4j
public class SftpUtils {
/**
* @param filePath 上传文件路径
* @param ftpPath 上传到的sftp服务器目录
* @param username 用户名
* @param password 密码
* @param host ip
* @param port 端口
*/
public static void uploadFile(String filePath, String ftpPath, String username, String password, String host, Integer port) {
FileInputStream input;
ChannelSftp sftp;
try {
JSch jsch = new JSch();
//获取ssh - session
com.jcraft.jsch.Session sshSession = jsch.getSession(username, host, port);
//添加配置密码
sshSession.setPassword(password);
Properties sshConfig = new Properties();
//关闭主机密钥检查
sshConfig.put("StrictHostKeyChecking", "no");
sshSession.setConfig(sshConfig);
//开启session连接
sshSession.connect();
//获取sftp通道-并连接
sftp = (ChannelSftp) sshSession.openChannel("sftp");
sftp.connect();
//判断目录是否存在
try {
//ls()获取指定目录下的文件列表
Vector dir = sftp.ls(ftpPath);
} catch (SftpException e) {
sftp.mkdir(ftpPath);
}
sftp.cd(ftpPath);
String filename = filePath.substring(filePath.lastIndexOf(File.separator) + 1); //附件名字
input = new FileInputStream(new File(filePath));
sftp.put(input, filename);
input.close();
sftp.disconnect();
sshSession.disconnect();
log.info("==============你的上传成功了===============");
} catch (Exception e) {
log.error("==============你的上传成功了===============",e);
}
}
/**
* @param directory SFTP服务器的文件路径
* @param downloadFile SFTP服务器上的文件名
* @param saveFile 保存到本地路径
* @param username 用户
* @param password 密码
* @param host ip
* @param port 端口
*/
public static void downloadFile(String directory, String downloadFile, String saveFile, String username, String password, String host, Integer port) {
ChannelSftp sftp;
try {
JSch jsch = new JSch();
//获取ssh - session
com.jcraft.jsch.Session sshSession = jsch.getSession(username, host, port);
//设置密码
sshSession.setPassword(password);
Properties sshConfig = new Properties();
//关闭主机密钥检查
sshConfig.put("StrictHostKeyChecking", "no");
sshSession.setConfig(sshConfig);
//开启session连接
sshSession.connect();
//获取sftp通道-并连接
sftp = (ChannelSftp) sshSession.openChannel("sftp");
sftp.connect();
if (directory != null && !"".equals(directory)) {
sftp.cd(directory);
}
FileOutputStream output = new FileOutputStream(new File(saveFile));
sftp.get(downloadFile, output);
output.close();
sftp.disconnect();
sshSession.disconnect();
log.info("================你的下载成功了!==================");
} catch (Exception e) {
log.error("================你的文件下载异常了!================", e);
}
}
}
该处使用工具类的方式调用即可,可进行自定义骚加改造。
总结
轮子必须有,将轮子进行到底