簡體   English   中英

如何將字符串寫入位於遠程服務器(Linux)中的文件

[英]How to write a string to a file located in remote server (linux)

我試圖構建一個小的代碼,我想在其中創建一些字符串並將該字符串傳輸到位於遠程服務器上的文件(應在運行時中創建)。 在我的情況下,遠程服務器是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.

抱歉,如果您覺得這很愚蠢,但我對此很陌生。

@Kenster答案對我不起作用(獲取0字節的文件),所以我得到了另一個解決方案:

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

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

希望能對某人有所幫助...

ChannelSftp具有put方法的版本,這些版本在遠程系統上接受文件名並返回OutputStream 寫入OutputStream的所有內容都將寫入遠程系統上的文件中。 您可以將二進制數據寫入OutputStream,或者如果想要向其寫入文本,則可以將其轉換為Writer:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM