web-dev-qa-db-ja.com

JavaでSFTPを介してファイルを転送する方法は?

JavaでSFTPを介してファイルを転送する方法は? SFTPクライアントのサンプルコードが必要です。アプリケーションにSFTPサーバーを埋め込みたいので、クライアントはファイルをアプリケーションに送信できるはずです。

PS:これはSFTPクライアントを要求されました。そして、この質問は他の2つの質問の重複ではありません。

SFTPを実装するには、以下のリンクを見つけてください。

https://codetransient.wordpress.com/2019/06/22/sftp-secured-file-transfer-protocol/

このコードを試してください。

public void send (String fileName) {
    String SFTPHOST = "Host:IP";
    int SFTPPORT = 22;
    String SFTPUSER = "username";
    String SFTPPASS = "password";
    String SFTPWORKINGDIR = "file/to/transfer";

    Session session = null;
    Channel channel = null;
    ChannelSftp channelSftp = null;
    System.out.println("preparing the Host information for sftp.");

    try {
        JSch jsch = new JSch();
        session = jsch.getSession(SFTPUSER, SFTPHOST, SFTPPORT);
        session.setPassword(SFTPPASS);
        Java.util.Properties config = new Java.util.Properties();
        config.put("StrictHostKeyChecking", "no");
        session.setConfig(config);
        session.connect();
        System.out.println("Host connected.");
        channel = session.openChannel("sftp");
        channel.connect();
        System.out.println("sftp channel opened and connected.");
        channelSftp = (ChannelSftp) channel;
        channelSftp.cd(SFTPWORKINGDIR);
        File f = new File(fileName);
        channelSftp.put(new FileInputStream(f), f.getName());
        log.info("File transfered successfully to Host.");
    } catch (Exception ex) {
        System.out.println("Exception found while tranfer the response.");
    } finally {
        channelSftp.exit();
        System.out.println("sftp Channel exited.");
        channel.disconnect();
        System.out.println("Channel disconnected.");
        session.disconnect();
        System.out.println("Host Session disconnected.");
    }
}   
62
Dhinakar