使用java将文件从本地窗口机器复制到远程Windows机器

时间:2016-05-17 14:23:05

标签: java linux windows remote-desktop jsch

我搜索了很多,但无法获得解决方案。我需要使用java程序将文件从本地Windows机器复制到远程Windows机器。我试过JSch,

JSch jsch = new JSch();
    Session session = null;
    session = jsch.getSession("username","hostname",22);
    session.setPassword("password");
    session.setConfig("StrictHostKeyChecking", "no");
        session.connect();
    ChannelSftp channel = null;
    channel = (ChannelSftp)session.openChannel("sftp");
    channel.connect();
        File localFile = new File("filePath");
        //If you want you can change the directory using the following line.
        channel.cd("E:/xxx");
    channel.put(new FileInputStream(localFile),localFile.getName());
        channel.disconnect();
    session.disconnect();

执行上述代码时,我面临以下错误,

Exception in thread "main" 2: No such file
at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2846)
at com.jcraft.jsch.ChannelSftp._realpath(ChannelSftp.java:2340)
at com.jcraft.jsch.ChannelSftp.cd(ChannelSftp.java:342)

我在远程Windows机器上安装了cygwin。似乎Jsch无法找到Windows路径。将文件从Windows机器复制到linux机器时,相同的代码可以正常工作。

请给我一个上述问题的解决方案,或者在java中有没有其他选择?感谢

1 个答案:

答案 0 :(得分:3)

要解析带有驱动器号的Windows路径,您可能需要使用/cygdrive prefix。在这种情况下,应使用参数cd调用/cygdrive/e/xxx方法调用。