C# 检查SFTP远程服务器上是否存在文件

C# 检查SFTP远程服务器上是否存在文件,c#,sftp,sharpssh,C#,Sftp,Sharpssh,以下代码将名为file.txt的文件从SFTP远程服务器下载到本地机器 sftp.Get("/usr/mine/file.txt" , "C:/Folder/"); 我要做的是检查远程服务器中是否存在文件file.txt。我怎么做这张支票。帮助 我使用 SharpSSH 你可以考虑只需点击小点击并尝试下载文件。如果它不存在,应该抛出一个异常,您可以捕获它并继续。检查文件是否存在是一种不稳定的情况,因此在大多数情况下,最好尝试执行您的操作。我使用.GetFileList将值读取到Array

以下代码将名为
file.txt的文件从
SFTP远程服务器
下载到
本地机器

 sftp.Get("/usr/mine/file.txt" , "C:/Folder/");
我要做的是检查
远程服务器中是否存在文件
file.txt
。我怎么做这张支票。帮助


我使用<代码> SharpSSH <代码>

你可以考虑只需点击小点击并尝试下载文件。如果它不存在,应该抛出一个异常,您可以捕获它并继续。检查文件是否存在是一种不稳定的情况,因此在大多数情况下,最好尝试执行您的操作。

我使用.GetFileList将值读取到ArrayList中,然后循环遍历每个值,将文件名添加到列表框中。然后,我对照列表框检查输入文件是否存在。下面的示例代码用于将.GetFileList值添加到ArrayList中,然后添加到列表框中

顺便说一句-这是VB.NET:)

作为ArrayList=oSftp.GetFileList(frmOptions.tbFTPInboundFolder.Text)的Dim InputFileList 对于InputFileList中的每个f 如果f.ToString()“.”也有f.ToString“.”那么 frmMain.lbFTPInputDirectory.Items.Add(f) 如果结束 下一个
这应该可以做到

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

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

您需要请求文件属性。如果该文件不存在,则会出现错误。您不妨尝试下载该文件,如果该文件不存在,则捕获异常。不管怎么说,这是一种比赛条件。@Bryancrossby是的,我也这么想。但我想可能有一个更好的方法。@Illep:假设您检查文件是否存在,但在检查之间发生了一些事情(文件被锁定、删除等)。您不妨尝试下载。是的,谢谢您的回复。如果你把它作为答案贴出来,我会把它标记为答案。
 using (var sftp = new SftpClient(host, username, password))
        {
            try
            {

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