gpt4 book ai didi

java - 如何使用 Java 在 SFTP 服务器文件中附加数据

转载 作者:行者123 更新时间:2023-11-30 05:45:40 25 4
gpt4 key购买 nike

我已尝试所有可能的方法将一些内容附加到 SFTP 文件路径中存在的文件中。我收到成功消息,但找不到该文件已更新。不知道是什么原因。

请在下面找到我的代码:

jsch = new JSch();
jsch.addIdentity(privateKey);
session = jsch.getSession(SFTPUSER, SFTPHOST, SFTPPORT);
session.setConfig("PreferredAuthentications", "publickey,keyboard-interactive,password");
ProxyHTTP proxy = new ProxyHTTP(PROXY, 8080);
session.setProxy(proxy);

session.setConfig("StrictHostKeyChecking", "no");
session.setConfig("cipher.s2c", "aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbc,aes192-cbc,aes256-cbc,aes256-ctr");
session.setConfig("cipher.c2s", "aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbc,aes192-cbc,aes256-cbc,aes256-ctr");
session.connect();

sftpChannel = (ChannelSftp)session.openChannel("sftp");
sftpChannel.connect();
if(sftpChannel.getSession().isConnected())
logger.debug("Remote session established through the channel");

sftpChannel.cd(remoteDirectory);

List<String> list = new ArrayList<>();

ChannelSftp sftp = (ChannelSftp) sftpChannel;
Vector<LsEntry> files = sftp.ls(remoteDirectory);

for (LsEntry entry : files)
{
if (!entry.getFilename().equals(".") && !entry.getFilename().equals(".."))
{
list.add(entry.getFilename());
}
}

System.out.println(list);

InputStream stream = sftp.get(remoteDirectory + remoteFile);
try {
BufferedReader br = new BufferedReader(new InputStreamReader(stream));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
// read from br
} finally {
stream.close();
}
Files.write(Paths.get(remoteFile), "CH|OK|en,ch,de,it|CH ".getBytes(), StandardOpenOption.APPEND);
System.out.println("added country to remote path");
sftpChannel.exit();
session.disconnect();

最佳答案

使用 ChannelSftp.put method overloads 之一mode 参数设置为 ChannelSftp.APPEND .

例如:

String s = "CH|OK|en,ch,de,it|CH ";

sftp.put(new ByteArrayInputStream(s.getBytes()), remoteFile, ChannelSftp.APPEND);
<小时/>

请注意,您的代码甚至无法远程执行您想要的操作。 Files.write 写入一个本地文件,而不是远程文件。

<小时/>

强制警告:请勿使用 StrictHostKeyChecking=no 盲目接受所有主机 key 。这是一个安全缺陷。您失去了针对 MITM attacks 的保护.

有关正确(且安全)的方法,请参阅:
How to resolve Java UnknownHostKey, while using JSch SFTP library?

关于java - 如何使用 Java 在 SFTP 服务器文件中附加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54884191/

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