C# 如果文件列表中缺少一个文件,如何计算为false
我试图检查一个文件夹中的一堆不同的文件。我已将文件添加到列表中,并循环浏览。 问题是,如果其中一个文件丢失,我不知道如何计算为false 我需要bool仅当所有文件都存在时才计算为trueC# 如果文件列表中缺少一个文件,如何计算为false,c#,C#,我试图检查一个文件夹中的一堆不同的文件。我已将文件添加到列表中,并循环浏览。 问题是,如果其中一个文件丢失,我不知道如何计算为false 我需要bool仅当所有文件都存在时才计算为true static List<string> files = new List<string>(); static bool fileExists; static string Dir = @"Z:\MyDir\myFolder\"; static void
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;
}
作为旁注,最好使用
路径。在加入文件路径时合并
。只是一个问题,当您将文件添加到列表中时,不可能测试文件是否存在?谢谢大家,喜欢路径。在这里合并
非常有用的信息。我希望我可以标记多个答案,但这些答案都很好。谢谢我的朋友。而不是路径。合并(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;
}