Java 项目中文件在 sftp 服务器的传输
项目中 pom.xml 文件导入以下依赖
<!--与 SFTP 服务器进行文件传输-->
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version>
</dependency>
文件在 sftp 服务器上传输的功能代码
import com.jcraft.jsch.*;
import java.util.Properties;
/**
* startFile:原文件路径
* endFile:需要传输的目标路径
* mode:传输方式('upload'、'down')
*/
public class SftpTranUtil {
public static void tranPDFFile(String startFile, String endFile, String mode) {
JSch jsch = new JSch();
Session session = null;
ChannelSftp channel = null;
try {
session = jsch.getSession(SFTP_USERNAME, SFTP_HOST, SFTP_PORT);
session.setPassword(SFTP_PASSWORD);
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
channel = (ChannelSftp) session.openChannel("sftp");
channel.connect();
if ("upload".equals(mode)) {
channel.put(startFile, endFile);
} else {
channel.get(startFile, endFile);
}
System.out.println("文件传输成功!");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (channel != null) {
channel.disconnect();
}
if (session != null) {
session.disconnect();
}
}
}
}
例
public class test {
public static void main(String[] args) {
// 本地文件 test.pdf 上传到 sftp 服务器
SftpTranUtil.tranPDFFile("D:/test.pdf", "/sftp/upload/320.pdf", "upload");
// 从 sftp 服务器下载文件到指定本地位置
SftpTranUtil.tranPDFFile("/sftp/upload/320.pdf", "D:/down.pdf", "down");
}
}