根据用户输入数据和数据库数据,我需要创建一个文件并将其放在远程机器中。所以我能想到的更好的方法是连接到远程机器并直接在那里写文件。到目前为止使用JSch
i连接到远程机器。但我不知道如何在此路径中的特定位置(root/usr/path/)
写入文件我需要编写并放置文件(ddr12213124.NEW or ddr12213124.CSV)
。
我已附加用于连接远程计算机的代码
package com.trial.classes;
import java.io.InputStream;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;
import com.jcraft.jsch.UserInfo;
public class transferFile {
public static void main(String[] args) {
// TODO Auto-generated method stub
JSch jsch = new JSch();
Session session = null;
try {
session = jsch.getSession("ragesh", "10.0.0.1", 22);
session.setConfig("StrictHostKeyChecking", "no");
session.setPassword("password");
session.connect();
System.out.println("Connected to session successfully");
Channel channel = session.openChannel("sftp");
channel.connect();
System.out.println("Connected to Channel successfully");
ChannelSftp sftpChannel = (ChannelSftp) channel;
sftpChannel.exit();
session.disconnect();
} catch (JSchException e) {
e.printStackTrace();
}
}
}
现在我想创建一个文件(ddr12213124.NEW or ddr12213124.CSV)
并将其放在路径root/usr/path/
我之前问过这个问题,但它被标记为重复,我被要求提出一个新问题。这不重复。到目前为止,在之前发布的链接中找不到合适的答案。
答案 0 :(得分:2)
您可以使用ChannelSFTP#put方法将文件写入远程目录。 put方法有几种口味,你可以根据自己的需要使用任何一种。以下是将文件从本地系统写入远程系统的示例代码:
JSch jsch = new JSch();
Session session = null;
try {
session = jsch.getSession("ragesh", "10.0.0.1", 22);
session.setConfig("StrictHostKeyChecking", "no");
session.setPassword("password");
session.connect();
System.out.println("Connected to session successfully");
Channel channel = session.openChannel("sftp");
channel.connect();
System.out.println("Connected to Channel successfully");
ChannelSftp sftpChannel = (ChannelSftp) channel;
// this will read file with the name test.txt and write to remote directory
sftpChannel.cd("/root/usr/path");
File f = new File("test.txt");
sftpChannel.put(new FileInputStream(f), f.getName()); // here you can also change the target file name by replacing f.getName() with your choice of name
sftpChannel.exit();
session.disconnect();
} catch (JSchException e) {
e.printStackTrace();
}