2016-05-17 11 views
0

Ich habe viel gesucht, konnte aber keine Lösung dafür bekommen. Ich muss eine Datei von lokalen Windows-Rechner auf Remote-Windows-Maschine mit Java-Programm kopieren. Ich habe mit JSch versucht,Kopieren von Dateien von lokalen Fenstermaschine zu Remote-Windows-Maschine mit Java

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(); 

Während dem obigen Code ausgeführt wird, ich bin der unten Fehler auftritt,

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) 

ich Cygwin in entfernten Windows-Rechner installiert habe. Es scheint, dass Jsch den Fensterweg nicht finden kann. Der gleiche Code funktioniert ordnungsgemäß beim Kopieren von Dateien von Windows-Maschine auf Linux-Maschine.

Bitte tel mir eine Lösung für das oben genannte Problem oder gibt es andere Möglichkeiten, dies in Java zu erreichen? Danke

Antwort

3

Um einen Windows-Pfad mit einem Laufwerksbuchstaben aufzulösen, müssen Sie möglicherweise die /cygdrive prefix verwenden. In diesem Fall sollte Ihr Methodenaufruf cd mit dem Parameter aufgerufen werden.

+0

Danke. Es hat perfekt funktioniert. – Jugi