小编Dea*_*arg的帖子

在 Jsch 中设置 ASCII 模式

我需要克服当前遇到的 Unix - Windows 文件格式(LF 到 CRLF)问题。我使用的 ftp 客户端是 Jcraft 的 Jsch。

在线文档非常简单,尽管我遇到了一个可以设置的标志

SSH_FXF_TEXT_MODE
Run Code Online (Sandbox Code Playgroud)

启用 ASCII 模式,但我不知道应该在代码本身的哪里设置它,也没有看到这些Javadocs中提到它

以下是我自己尝试的解决方法。“新添加”行显示了我如何获取文件并将其转换为 ASCII 编码字符串,然后使用 channelSftp put 方法进行传输。本来我只是把文件本身放在一起。

final JSch jsch = new JSch();
final Session session = jsch.getSession(username, host);
session.setPassword(password);
session.connect();

final Channel channel = session.openChannel("sftp");
channel.connect();
final ChannelSftp channelSftp = (ChannelSftp) channel;
channelSftp.cd(destDir);

File file = new File(pathName);
String content = FileUtils.readFileToString(file, "US-ASCII"); // Newly Added
channelSftp.put(content, fileToTransfer.getName());
Run Code Online (Sandbox Code Playgroud)

请注意,为了代码片段的清晰性,我省略了异常处理和其他实践。

此解决方法会成功吗?或者 Jsch 看似默认的二进制模式会覆盖 ASCII 编码字符串并照常传输吗?

我会测试一下,我只是想知道你们中是否有人可以直接分辨出来?或者确实知道如何/在哪里设置 Text_Mode 标志!:)

另外,我使用的Jsch版本是jsch-0.1.49.jar。

java jsch

4
推荐指数
1
解决办法
6824
查看次数

标签 统计

java ×1

jsch ×1