如果文件列表中缺少一个文件,如何评估为false

时间:2013-12-15 23:07:52

标签: c#

我正在尝试检查文件夹中的一堆不同文件。我已将文件添加到列表中并循环播放。 问题是如果缺少其中一个文件,我不知道如何评估为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));   
        }

5 个答案:

答案 0 :(得分:7)

与Linq解决方案一样,但这适用于老派的爱好者....

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

答案 1 :(得分:5)

使用LINQ的单线程,无需循环(编辑使用Path.Combine):

fileExists = files.All(fl => File.Exists(Path.Combine(Dir, fl)));

答案 2 :(得分:0)

只需将它们组合起来:

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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