Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果文件列表中缺少一个文件,如何计算为false_C# - Fatal编程技术网

C# 如果文件列表中缺少一个文件,如何计算为false

C# 如果文件列表中缺少一个文件,如何计算为false,c#,C#,我试图检查一个文件夹中的一堆不同的文件。我已将文件添加到列表中,并循环浏览。 问题是,如果其中一个文件丢失,我不知道如何计算为false 我需要bool仅当所有文件都存在时才计算为true static List<string> files = new List<string>(); static bool fileExists; static string Dir = @"Z:\MyDir\myFolder\"; static void

我试图检查一个文件夹中的一堆不同的文件。我已将文件添加到列表中,并循环浏览。 问题是,如果其中一个文件丢失,我不知道如何计算为false

我需要bool仅当所有文件都存在时才计算为true

    static List<string> files = new List<string>();
    static bool fileExists;
    static string Dir = @"Z:\MyDir\myFolder\";

    static void Main(string[] args)
    {
        files.Add("MyFile1.txt");
        files.Add("MyFile2.txt");
        files.Add("MyFile3.txt");
        files.Add("MyFile4.txt");
        files.Add("MyFile5.txt");
        files.Add("MyFile6.txt");
        files.Add("MyFile7.txt");
        files.Add("MyFile8.txt");
        files.Add("MyFile9.txt");
        files.Add("MyFile10.txt");

        foreach(string fl in files)
        {
            fileExists = (File.Exists(Dir + fl));   
        }
静态列表文件=新列表();
静态布尔文件存在;
静态字符串Dir=@“Z:\MyDir\myFolder\”;
静态void Main(字符串[]参数)
{
添加(“MyFile1.txt”);
添加(“MyFile2.txt”);
添加(“MyFile3.txt”);
添加(“MyFile4.txt”);
添加(“MyFile5.txt”);
添加(“MyFile6.txt”);
添加(“MyFile7.txt”);
添加(“MyFile8.txt”);
添加(“MyFile9.txt”);
添加(“MyFile10.txt”);
foreach(文件中的字符串fl)
{
fileExists=(File.Exists(Dir+fl));
}
只需将它们组合起来:

static bool fileExists = true;
...
...
foreach(string fl in files)
    {
        fileExists = fileExists && (File.Exists(Dir + fl));   
    }

带LINQ的一行程序,无需循环(编辑使用
路径。组合
):


就像Linq solutions,但这是为老派的爱好者准备的

    fileExists = true;
    foreach(string fl in files)
    {
        if(!File.Exists(Path.Combine(Dir,fl)))
        {
           fileExists = false;
           break;
        }
    }

默认文件exists为true,如果在foreach中发现文件不存在,则将其设置为false并中断循环

对于每个成功找到的文件,增加一个计数器:

static bool fileExists = false;
int fileCount = 0;
foreach(string fl in files)
    {
        if(File.Exists(System.IO.Path.Combine(Dir,fl)))
        {
           fileCount++;
        }
    }
if (fileCount == files.Count)
    {
        fileExists = true;
    }

作为旁注,最好使用
路径。在加入文件路径时合并
。只是一个问题,当您将文件添加到列表中时,不可能测试文件是否存在?谢谢大家,喜欢
路径。在这里合并
非常有用的信息。我希望我可以标记多个答案,但这些答案都很好。谢谢我的朋友。而不是de>Dir+fl:
路径。合并(Dir,fl)
我喜欢LINQ解决方案,但我有点正统和传统,这仍然非常有用,非常感谢。我将对此进行记录。您在@Steve的公认答案中指出,您喜欢
中断
。作为后续/FYI,如果任何文件不存在,此方法也会提前中断。很好,但如果找到丢失的文件,则循环继续,直到结束(如果文件列表很大…),这是对的,但他可能想做其他事情,然后只检查它是否存在。如果不存在,他应该在fileExists的计算结果为false时中断。感谢Steve,我很高兴这会爆发,而不是继续后评估。
static bool fileExists = false;
int fileCount = 0;
foreach(string fl in files)
    {
        if(File.Exists(System.IO.Path.Combine(Dir,fl)))
        {
           fileCount++;
        }
    }
if (fileCount == files.Count)
    {
        fileExists = true;
    }