2013-02-27 4 views
16

Вот мой код, который извлекает содержимое файла на удаленном сервере и выводится как вывод.Передача файла SFTP с использованием 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); 
    } 
} 
} 

Теперь, как реализовать эту программу, что файл копируется в локальном хосте, и как скопировать файл с локального хоста на сервер.

Здесь как сделать работу передачей файлов для любого формата файлов.

+0

Я привел пример того, как это сделать с локального сервера на удаленный экземпляр AWS EC2 здесь http://stackoverflow.com/a/16626635/311525 – Scott

+0

Если вы ищете передачу файлов между локальным и удаленным сервером, эти ссылки должны быть полезны - [загрузка файла] (http://kodehelp.com/java-program-for-uploading-file-to-sftp-server/), [загрузка файла] (http://kodehelp.com/ Java-программы-для-скачивание-файла-с-SFTP-сервер /) –

ответ

2

Наиболее простой способ загрузить файл через SFTP с JSch является:

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

Аналогично для скачивания:

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

Возможно, вам понадобится deal with UnknownHostKey exception.