2015-04-06 78 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其他現有的文件夾()方法,給出了在這種情況下,你的假陽性,如果它發現目錄的一部分它回顯真,即使並不是所有的路徑都存在。 我會建議找你的代碼改成這樣:

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; 
    } 

不要忘記換回來你工作的目錄在它麥特斯情況下!