2013-02-27 35 views
16

Oto mój kod, który pobiera zawartość pliku na serwerze zdalnym i wyświetla jako wynik.Przesyłanie plików SFTP za pomocą Java JSch

package sshexample; 

import com.jcraft.jsch.*; 
import java.io.*; 

public class SSHexample 
{ 
public static void main(String[] args) 
{ 
    String user = "user"; 
    String password = "password"; 
    String host = "192.168.100.103"; 
    int port=22; 

    String remoteFile="sample.txt"; 

    try 
    { 
     JSch jsch = new JSch(); 
     Session session = jsch.getSession(user, host, port); 
     session.setPassword(password); 
     session.setConfig("StrictHostKeyChecking", "no"); 
     System.out.println("Establishing Connection..."); 
     session.connect(); 
     System.out.println("Connection established."); 
     System.out.println("Creating SFTP Channel."); 
     ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp"); 
     sftpChannel.connect(); 
     System.out.println("SFTP Channel created."); 
     InputStream out= null; 
     out= sftpChannel.get(remoteFile); 
     BufferedReader br = new BufferedReader(new InputStreamReader(out)); 
     String line; 
     while ((line = br.readLine()) != null) 
     { 
      System.out.println(line); 
     } 
     br.close(); 
     sftpChannel.disconnect(); 
     session.disconnect(); 
    } 
    catch(JSchException | SftpException | IOException e) 
    { 
     System.out.println(e); 
    } 
} 
} 

Teraz, jak zaimplementować ten program, aby plik został skopiowany w localhost i jak skopiować plik z localhost na serwer.

Tutaj można wykonać transfer plików do dowolnego formatu plików.

+0

Podałem przykład jak to zrobić z serwera lokalnego do zdalnej instancji AWS EC2 tutaj http://stackoverflow.com/a/16626635/311525 – Scott

+0

Jeśli szukasz transferu plików między serwerem lokalnym i zdalnym, te linki powinny być pomocne - [upload pliku] (http://kodehelp.com/java-program-for-uploading-file-to-sftp-server/), [pobieranie pliku] (http://kodehelp.com/ java-program-for-download-file-from-sftp-server /) –

Odpowiedz

2

najbardziej trywialny sposób, aby przesłać plik przez SFTP z jsch jest:

JSch jsch = new JSch(); 
Session session = jsch.getSession(user, host); 
session.setPassword(password); 
session.connect(); 

ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp"); 
sftpChannel.connect(); 

sftpChannel.put("C:/source/local/path/file.zip", "/target/remote/path/file.zip"); 

Podobnie do pobrania:

sftpChannel.get("/source/remote/path/file.zip", "C:/target/local/path/file.zip"); 

Być może trzeba będzie deal with UnknownHostKey exception.