当前位置: 首页 > 面试题库 >

如何在Java中通过SFTP传输文件?

闻人飞白
2023-03-14
问题内容

如何在Java中通过SFTP传输文件?
我想要SFTP客户端的示例代码。我想将SFTP服务器嵌入到我的应用程序中,并且客户端应该能够将文件发送到我的应用程序。

PS:这是要求SFTP客户端。这个问题不是其他两个问题的重复。

找到以下链接以实现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.");
    }
}


 类似资料:
  • 问题内容: 我正在寻找用于SFTP文件传输的简单Java库。除此以外,我不需要任何其他功能。 我已经尝试过Zehon的,但是令人难以置信的是,我认为8个jar文件对于我需要的这么少的功能有点疯狂。 而且该库必须是免费的(例如免费啤酒),并且最好是开放源代码(不是必需的)。 谢谢。 问题答案: 编辑: 我将保留我以前的答案,因为JSch仍然在许多地方使用,但是如果需要更好地文档说明的库,则可以使用s

  • 问题内容: 我正在尝试使用Java从使用SFTP(而不是FTPS)的服务器检索文件。我怎样才能做到这一点? 问题答案: 另一个选择是考虑查看JSch库。JSch似乎是一些大型开源项目的首选库,其中包括Eclipse,Ant和Apache Commons HttpClient。 它很好地支持用户/通过和基于证书的登录,以及所有其他许多美味的SSH2功能。 这是通过SFTP检索的简单远程文件。错误处理

  • 问题内容: 我在完全冻结JVM的应用程序中发现一个错误。产生的stacktrace将为开发人员提供有价值的信息,我想从Java控制台中检索它。JVM崩溃时,控制台被冻结,我无法再复制包含的文本。 是否可以将Java控制台直接通过管道传输到文件,或通过其他某种方式访问​​Java应用程序的控制台输出? 更新:我忘记提了,没有更改代码。我是手动测试仪。 更新2:这是在Windows XP下,它实际上是

  • 我试图移动一些文件从存储目录到远程服务器"BOB"使用jcifs SMB.我需要使用jcifs,因为移动通过和Android应用程序,即。我正在将照片从应用程序移动到远程服务器。为了验证为用户,我的公司使用Active Directory。有一段时间,Active Directory和照片所在的服务器是同一个服务器,一切都很好。不幸的是,他们不得不将存储Active Directory的服务器更改

  • 有没有一种方法可以使用Jsch进行异步sftp文件传输,而无需管理自己的线程? 我看到有一个sftprogressmonitor来监控进度,但它只提供了一个回调。 我正在寻找类似Java的write方法: 公共抽象未来写入(ByteBuffer src,长位置) 哪个库提供异步sftp传输?

  • 我的本地计算机上有一个文件。我有一个Perl脚本可以通过SFTP连接将此文件复制到远程位置()。