2012-08-10 107 views
2

我已經在一個amazon EC2實例中設置了ftp服務器,並且可以使用apache ftp庫從本地計算機的服務器下載文件。現在我試圖在另一個Amazon EC2實例中運行相同的ftpclient程序,但它不起作用。 下面是示例代碼從ftpsever下載文件:如何使用java apache將文件從一個Amazon EC2實例下載到另一個EC2實例FTPClient

FTPClient ftp = new FTPClient(); 
String loc = "/home/ubuntu/test/"; 
String remote = "/home/ftp"; 
try 
{ 
    ftp.connect("ec2-xx-xx-xx-xxx.compute-1.amazonaws.com", 21); 
    ftp.login("username", "xxx"); 
    System.out.println("connected.."); 
    ftp.setFileType(FTP.BINARY_FILE_TYPE); 

    OutputStream output; 
    output = new FileOutputStream(loc+"file_name"); 
    ftp.retrieveFile(remote+"/filen_name", output); 
    output.close(); 
    ftp.disconnect(); 
} 
catch(Exception ex) 
{ 
    ex.printStackTrace(); 
} 

下面的代碼可以列出遠程目錄中的所有文件名:

for(FTPFile f: ftp.listFiles(remote)) 
{ 
    System.out.println(f.getName()); 

} 

兩者的代碼做工精細在我的本地機器,但不在亞馬遜機器上工作。它連接但不能列出文件名或下載文件。它不顯示任何錯誤消息。

感謝advance--

+0

你嘗試切換到[被動](http://commons.apache.org/net/api-3.1/org/apache/commons/net/ftp/FTPClient .html#PASSIVE_LOCAL_DATA_CONNECTION_MODE)模式? – Edenbauer 2012-08-10 12:27:55

+0

是的,我嘗試過,但它不工作。 – zawoad 2012-08-13 02:42:18

回答