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