2013-02-27 163 views
16

這裏是我的代碼,它在遠程服務器上檢索文件的內容並顯示爲輸出。使用Java的SFTP文件傳輸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 2013-09-17 17:20:58

+0

如果您正在尋找本地和遠程服務器之間的文件傳輸,這些鏈接應該會有所幫助 - [文件上傳](http://kodehelp.com/java-program-for-uploading-file-to-sftp-server/),[文件下載](http://kodehelp.com/ Java的程序進行,下載文件,從-SFTP服務器/) – 2013-02-27 23:22:46

回答

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