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