Java 如何将字符串写入远程服务器(linux)中的文件

Java 如何将字符串写入远程服务器(linux)中的文件,java,jsch,Java,Jsch,我试图构建一个小代码,在其中创建一些字符串,并将该字符串传输到远程服务器中的文件(应该在运行时创建)。在我的例子中,远程服务器是Linux 有人能帮我吗?我正在使用JSCH和ChannelSftp,但无法完成这项工作。下面是我的代码: JSch jsch = new JSch(); session = jsch.getSession(SFTPUSER, MachineIP, SFTPPORT); String str = "Hello"; session.setPassword(SFTPPASS

我试图构建一个小代码,在其中创建一些字符串,并将该字符串传输到远程服务器中的文件(应该在运行时创建)。在我的例子中,远程服务器是Linux

有人能帮我吗?我正在使用JSCH和ChannelSftp,但无法完成这项工作。下面是我的代码:

JSch jsch = new JSch();
session = jsch.getSession(SFTPUSER, MachineIP, SFTPPORT);
String str = "Hello";
session.setPassword(SFTPPASS);
System.out.println(SFTPPASS);
java.util.Properties config = new java.util.Properties();

System.out.println("Config done");
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
System.out.println("Config set");

session.connect();
System.out.println("Session connected");
channel = session.openChannel("sftp");
channel.connect();

System.out.println("Connection Opened\n");
channelSftp = (ChannelSftp) channel;
channelSftp.cd(SFTPWORKINGDIR);
File f=new File("Test.txt");
//unable to do anything beyond this.
很抱歉,若您觉得这很愚蠢,但我对它非常陌生。

的版本在远程系统上接受文件名,并且返回一个。写入OutputStream的任何内容都会写入远程系统上的文件。您可以将二进制数据写入OutputStream,或将其转换为写入器(如果要向其写入文本):

try (OutputStream out = channelSftp.put("/some/remote/file")) {
    OutputStreamWriter writer = new OutputStreamWriter(out);
    writer.write("some text");
} catch (IOException e) {
    ....
}
具有的版本,这些版本在远程系统上接受文件名并返回。写入OutputStream的任何内容都会写入远程系统上的文件。您可以将二进制数据写入OutputStream,或将其转换为写入器(如果要向其写入文本):

try (OutputStream out = channelSftp.put("/some/remote/file")) {
    OutputStreamWriter writer = new OutputStreamWriter(out);
    writer.write("some text");
} catch (IOException e) {
    ....
}

@Kenster answer不适用于我(获取一个0字节的文件),因此我获得了另一个解决方案:

String content = "some text";
InputStream stream = new ByteArrayInputStream (content.getBytes ());

sftpChannel.put (stream, "/some/remote/file");

希望它能帮助某人…

@Kenster answer对我不起作用(获取一个0字节的文件),所以我得到了另一个解决方案:

String content = "some text";
InputStream stream = new ByteArrayInputStream (content.getBytes ());

sftpChannel.put (stream, "/some/remote/file");

希望它能帮助某人……

到目前为止,您在lline上做了哪些尝试
//除此之外,您什么都做不了。
。对于文件传输,请查看到目前为止您在lline上尝试了哪些操作。//除此之外,您无法执行任何操作。。关于文件传输,请查看Thanke@Kenster。。这非常有用,您需要使用
writer.flush()
作者之后。写(“一些文本”),否则您可能会得到一个空文件谢谢@Kenster。。这非常有用,您需要使用
writer.flush()
作者之后。写(“一些文本”),否则您可能会得到一个空文件