2015-04-06 2 views
0

Я хочу проверить, существует ли удаленная папка, прежде чем перечислять файлы внутри нее. Но этот код дает мне SftpPathNotFoundException : No such fileПроверьте, существует ли удаленная папка - Renci.ssh

Я знаю, что папка, которая проверяется, не существует, и именно по этой причине я бы хотел ее обработать.

var sftp = new SftpClient(sftpHost, username, password); 
string sftpPath30s = "/home/Vendors/clips/1/4/4"; 

if (sftp.Exists(sftpPath30s)) 
    { 
    var files30s = sftp.ListDirectory(sftpPath30s); //error here 
    if(files30s!=null) 
     { 
      Console.writeline("code doesn't reach here"); 
     } 
    } 

Этот код отлично работает для других существующих папок, таких как «/ дома/Продавцы/клипы/1/4/3» и т.д.

ответ

0

в sftp.Exists() метод дает ложноположительный в этом случае , если он найдет часть каталога, она будет откликнуться даже на то, что не все пути существуют. я рекомендовал бы изменить you'r код для этого:

if (IsDirectoryExist(sftpPath30s)) 
    { 
    var files30s = sftp.ListDirectory(sftpPath30s); 

    } 
else 
{ 
    //Do what you want 
} 

, а затем метод «IsDirectoryExists»:

 private bool IsDirectoryExists(string path) 
    { 
     bool isDirectoryExist = false; 

     try 
     { 
      sftp.ChangeDirectory(path); 
      isDirectoryExist = true; 
     } 
     catch (SftpPathNotFoundException) 
     { 
      return false; 
     } 
     return isDirectoryExist; 
    } 

не забудьте изменить обратно каталог, работающий на в случае Меттерс!

Смежные вопросы