gpt4 book ai didi

java - 在 Jsch 中设置 ASCII 模式

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:12:27 25 4
gpt4 key购买 nike

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

网上的文档很简陋,虽然我遇到过一个可以设置的标志

SSH_FXF_TEXT_MODE

启用 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());

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

这个变通办法会成功,还是 Jsch 看似默认的二进制模式会覆盖 ASCII 编码字符串并像往常一样传输它?

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

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

最佳答案

文本模式标志已添加到 SFTP 协议(protocol)版本 4。Jsch currently supports SFTP protocol version 3 ,它没有指定文本模式标志。

您可以看到 SFTP 规范修订列表 here .协议(protocol)版本 3 的 RFC 是 here .请注意,使用最广泛的 SFTP 服务器 OpenSSH 也仅支持协议(protocol)版本 3,并且不支持行终止符转换。所以在 Jsch 中拥有标志不会很有用。

关于java - 在 Jsch 中设置 ASCII 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25791369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com