2013-06-03 59 views
2

我是SFTP服務器的新用戶。我試圖使用SFTP服務器上傳和下載文件。這是一個獨立的應用程序。 雖然從偏遠服務器到本地服務器下載文件,我可以使用下面的SFTP代碼下載文件的列表中指定的路徑下:如何使用SFTPClient從遠程服務器下載特定文件?

sftp.lcd(details.get("LOCAL_DIR")); 
sftp.cd(details.get("REMOTE_DIR")); 

List<SftpFile> remoteFiles = sftp.ls(); 
for(int i = 0 ; i < remoteFiles.size(); ++i) { 
    if(remoteFiles.get(i).isFile()) { 
     String remoteFile = remoteFiles.get(i).getFilename(); 
     sftp.get(remoteFile); 
     System.out.println("[SFTPOperations][downLoad] Downloaded: " + remoteFile); 
     System.out.println("Remote File: " + remoteFile); 
     System.out.println("Remote Archive Dir: " + details.get("REMOTE_ARCHIVE_DIR")); 
     sftp.rename(remoteFiles.get(i).getFilename(), details.get("REMOTE_ARCHIVE_DIR")); 
     System.out.println("[SFTPOperations][downLoad] Archived: " + remoteFile); 
    } 
} 

通過使用上面的代碼,從遠程其下載的所有文件目錄到本地目錄。在這裏,我想從這些匹配給定的模式遠程目錄下載文件。

E.g.模式:Query*.txt

我想下載文本文件這是開始於Query

請建議如何做到上面提到的。

+0

不,這不是可能的模式是有效。 –

+0

@RomanC爲什麼不呢? – fGo

+0

服務器可能關閉,可能無法訪問,原因很多。 –

回答

1

你試試這個?

if (remoteFile.endsWith(".txt")) { 
    sftp.get(remoteFile); 
} 

但是你可以使用某種形式的正規表示法來驗證,如果文件名稱根據您所國家隊訓練評估

+0

謝謝!是的,我嘗試了上面的一個。但我的要求是模式匹配。所以我用if(remoteFile.matches(pattern)){sdk.get(remoteFile); } –

+1

@RaghuKing以防萬一看看這個http://www.vogella.com/articles/JavaRegularExpressions/article.html – fGo

+0

謝謝你!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! –

相關問題