java - 使用 Jsch 将带有目录的文件传输到 SFTP 服务器

标签 java io jsch

我正在尝试将文件从本地计算机移动到远程服务器。但我无法使用 JSch api 来做到这一点。

for (File f : fileList) {
    channelSftp.put(new FileInputStream(f), "/ROOT/File/"+f.getName());
}

我正在循环本地计算机目录/Home/File/file1.txt、file2、txt file3.txt 等并将其保存到 fileList。

我需要将这些文件传输到SFTP服务器中的不同目录。 说/ROOT/File/file1.txt, file2,txt file3.txt。

我不知道如何将/Home 更改为/ROOT 文件路径名。而且我还需要复制所有文件而不使用 sftpChannel.mkdir(folder);在 JSch 中[一一创建文件夹]。

最佳答案

“这里我不知道如何将/Home 更改为/ROOT 文件路径名。而且我需要在 JSch 中复制所有文件而不使用 sftpChannel.mkdir(folder); [一一创建文件夹]。” - 我不太明白这一点。您不想在代码中使用 mkdir 并且目录已经存在? PFB 示例代码。您可以在执行代码之前在服务器中创建 ROOT 目录。这将循环本地目录中的文件并将它们传输到 SFTP 服务器..

public static void main (String args[]) throws FileNotFoundException, IOException
{
    try {
        JSch jsch = new JSch();
        Session session = jsch.getSession("sftpuser", "sftphost");
        session.setPassword("sftppassword");
        java.util.Properties config = new java.util.Properties();
        config.put("StrictHostKeyChecking", "no");
        config.put("PreferredAuthentications",
                "publickey,keyboard-interactive,password");

        session.setConfig(config);
        session.connect();
        Channel channel = session.openChannel("sftp");
        channel.connect();
        System.out.println("sftp channel opened and connected.");
        ChannelSftp channelSftp = (ChannelSftp) channel;

        String sftpDirectory = "/target/Rootlocation";

        File directory = new File("C:\\Windows\\HomeLocation");
        File[] fList = directory.listFiles();

        for (File file : fList){           
            if (file.isFile()){
                String filename=file.getAbsolutePath();
                channelSftp.put(filename, sftpDirectory, ChannelSftp.OVERWRITE);
                System.out.println(filename + " transferred to " + sftpDirectory );
            }
        }
    }
    catch (JSchException e) {
        e.printStackTrace();
    }catch (Exception e) {
        e.printStackTrace();
    } finally {
        System.out.println("Transfer Process Completed...");
    }
}

关于java - 使用 Jsch 将带有目录的文件传输到 SFTP 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45018324/

相关文章:

java - Java 中的 Runtime.getRuntime().exec() 具有文件重定向功能

c# - 将 HTTP 音频流记录到文件

java - JSch ChannelSftp.ls - 在 java 中传递匹配模式

java - 将重复值添加到 ArrayList

java - log4j 或 Logback 是否支持内存映射文件?

java - PrintWriter 在下一行打印

java - 使用 Java 在 WinSCP 中将文件从本地计算机传输到服务器

java - JSch:使用 JSCH tty 代码执行交互式命令我做错了什么?

java - 如何在 Java 中生成连续泊松分布?

c++ - 确定流结束时的 EOF 问题