java sftp 编码_java通过sftp形式连接主机下载文件(附项目与主机编码不一致解决方法)...

本文介绍如何使用Java的JSch库通过SFTP连接远程主机并下载文件,特别是当项目编码与主机编码不一致时的问题。通过设置ChannelSftp的编码,解决了由于编码不同导致的文件找不到错误。在某些版本的SFTP中,直接设置编码无效,通过反射修改server_version字段实现了编码的变更,从而成功下载文件。
摘要由CSDN通过智能技术生成

最近接了一个文件下载接口需求,需要采用sftp形式与对端主机连接,进行文件传输。

首先引入java操作sftp的工具类包:

com.jcraft

jsch

0.1.53

编写文件工具类(包含sftp连接、断开、下载文件等方法)

/**

* sftp形式下载文件

*

* @author wangshuai

*

*/

@Slf4j

public class SFTPUtil {

private ChannelSftp sftp = new ChannelSftp();

private Session session;

/**

* SFTP 登录用户名

*/

private String username;

/**

* SFTP 登录密码

*/

private String password;

/**

* 私钥

*/

private String privateKey;

/**

* SFTP 服务器地址IP地址

*/

private String host;

/**

* SFTP 端口

*/

private int port;

/**

* 构造基于密码认证的sftp对象

*/

public SFTPUtil(String username, String password, String host, int port) {

this.username = username;

this.password = password;

this.host = host;

this.port = port;

}

/**

* 构造基于秘钥认证的sftp对象

*/

public SFTPUtil(String username, String host, int port, String privateKey) {

this.username = username;

this.host = host;

this.port = port;

this.privateKey = privateKey;

}

public SFTPUtil() {

}

/**

* 连接sftp服务器

*/

public void login() {

try {

JSch jsch = new JSch();

if (privateKey != null) {

jsch.addIdentity(privateKey);// 设置私钥

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值