如何使用parm值检查文件是否存在?

时间:2014-01-23 22:08:10

标签: c# parameters file-exists

我正在尝试检查服务器上是否存在文件路径,以便可以使用它。我目前正在使用localhost作为服务器进行测试。我尝试if (File.Exists(filePath1))它找到了路径,但它在本地查找文件而不访问服务器。

如何检查filePath1中是否存在server1?我在部署之前使用以下参数值来测试解决方案。

ParmNames类中的参数值:

filePath1 = "C:\\Users\\smithj\\Documents\\file.txt"

server1 = "localhost"

public class class1
{
    FileRules putFileRH = new FileRules();
    List<IRuleParameter> FileParms = new List<IRuleParameter>();

    private bool Method1()
    {       
        FileParms.Add(new RuleParms(ParmNames.SourceServer, server1.ToString(), string.Empty));
        FileParms.Add(new RuleParms(ParmNames.FileName, filePath1, string.Empty));

        foreach (var server in FileParms)   //not sure if this actually goes through each server or through each parm  in FileParms
        {
            //if (File.Exists(filePath1))         first attempt
            if (File.Exists(server.ValueEnvironment))   //this attempt doesn't find the file
            {
                ...
                return true;
            }
            else
            {
                ...
                return false;
            }
            return true;
        }
    }
}

IRuleParameter界面:

public interface IRuleParameter
{
    string Name { get; }
    string ValueEnvironment { get; }
    string ValueType { get; }
}

2 个答案:

答案 0 :(得分:2)

在这里你应该检查server.FileName(或RuleParms类中你的属性名称)

if (File.Exists(server.ValueEnvironment))  
{
      return true;
}

在你的foreach循环server代表你当前的RuleParms项。所以你需要检查它的属性。FileName应该是你的属性名称,其中包含filePath1值。

答案 1 :(得分:1)

您希望查找具有给定名称的所有规则并检查某些/所有此类规则的条件。根据您检查条件的需要,使用Where过滤掉您想要的规则AnyAll ...当前样本Any应该足够了:

var fileExists = FileParms
   .Where(r => r.Name == ParmNames.FileName) // find all "File names"
   .Any(r =>File.Exists(r.ValueEnvironment) // check if any of the files exist