Java程序将文件从Linux远程服务器复制到Windows本地机器

时间:2016-03-14 08:57:01

标签: java linux windows jsch

我正在尝试制作一个java程序,将远程linux服务器中给定目录的文件复制到我的windows机器上。 我做了以下计划:

  package abc;

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;

public class Copy 
{

    /**
     * @param args
     */
    public static void main(String[] args) 
    {
        System.out.println(System.getProperty("os.name"));
        String hostname = "10.0.0.100";
        String username = "pratz";
        String password = "pratz";
        String copyFrom = ".";
        String copyTo = "."; 
        JSch jsch = new JSch();
        Session session = null;
        System.out.println("Trying to connect.....");
        try {

            session = jsch.getSession(username, hostname, 22);
            session.setConfig("StrictHostKeyChecking", "no");
            session.setPassword(password);
            session.connect(); 
            Channel channel = session.openChannel("sftp");
            channel.connect();
            ChannelSftp sftpChannel = (ChannelSftp) channel; 
            sftpChannel.get(copyFrom, copyTo);
            sftpChannel.exit();
            session.disconnect();
        } catch (JSchException e) {
            e.printStackTrace();  
        } catch (SftpException e) {
            e.printStackTrace();
        }
        System.out.println("Done !!");



    }

}

但它会出现以下错误:

com.jcraft.jsch.JSchException: failed to send channel request
Done !!

at com.jcraft.jsch.Request.write(Request.java:65)
at com.jcraft.jsch.RequestSftp.request(RequestSftp.java:47)
at com.jcraft.jsch.ChannelSftp.start(ChannelSftp.java:237)
at com.jcraft.jsch.Channel.connect(Channel.java:152)
at com.jcraft.jsch.Channel.connect(Channel.java:145)
at abc.Copy.main(Copy.java:34)

当我尝试使用WINSCP复制文件时,文件很容易从远程linux服务器复制到windows机器。如何让我的java程序将文件从linux复制到windows?

0 个答案:

没有答案