2012-06-09 2 views
2

Следующий код будет содержать файл file.txt от SFTP remote server до local machine.Проверьте, существует ли файл на удаленном сервере SFTP

sftp.Get("/usr/mine/file.txt" , "C:/Folder/"); 

Что я хочу сделать, это проверить, если файл file.txt существует в remote server или нет. Как я могу сделать эту проверку. Помощь

Я использую SharpSSH

+0

Необходимо указать атрибуты файлов. Вы получите сообщение об ошибке, если файл не существует. –

+0

Как я могу это сделать? – Illep

+0

Возможно, вы просто попробуете загрузить файл и поймаете исключение, если оно не существует. В любом случае это состояние гонки. –

ответ

4

Вы могли бы рассмотреть только с небольшой удар и пытается загрузить файл. Если этого не существует, следует исключить исключение, и вы можете просто поймать его и продолжить. Проверка наличия файла - это изменчивая ситуация, поэтому в большинстве случаев лучше всего попробовать и выполнить свое действие.

0

Я делаю это, используя .GetFileList и считывая значения в ArrayList, а затем перебираю каждое значение, добавляя имя файла в список. Затем я проверяю свой файл ввода на поле списка, чтобы узнать, существует ли он. Пример кода ниже, чтобы добавить значения .GetFileList в ArrayList, а затем в список.

BTW - это VB.NET :)

Dim InputFileList As ArrayList = oSftp.GetFileList(frmOptions.tbFTPInboundFolder.Text) 
For Each f In InputFileList 
       If f.ToString() <> "." AndAlso f.ToString <> ".." Then 
        frmMain.lbFTPInputDirectory.Items.Add(f) 
       End If 
      Next 
1

Это должно сделать трюк.

using (var sftp = new SftpClient(host, username, password)) 
     { 
      try 
      { 

       sftp.Connect(); 
       MessageBox.Show(sftp.Exists(remoteDirectory).ToString()); 
      } 
      catch (Exception Sftpex) 
      { 
       MessageBox.Show(Sftpex.ToString()); 
      } 
     }