我有一个名为list.txt的文件,在这个文件中我有一个像这样的文件路径列表:
Directory1/DirectoryZ/file.txt
Directory2/DirectoryX/file1.txt
Directory3/DirectoryY/file2.txt
etc...
我尝试过这样的事情:
if (File.Exists("list.txt"))
{
string[] files = File.ReadAllLines("list.txt");
if (File.Exists(files.ToString()))
{
Console.WriteLine(files[1]);
}
}
else
{
Console.WriteLine("Cannot find som' files");
}
Console.ReadKey(true);
我的问题:
如何通过读取文件检查该特定路径中是否存在这些文件,然后在检查后是否缺少文件以引发错误?
P.S: 对不起,如果我的问题重复,我还没有找到像我一样的问题。
答案 0 :(得分:2)
if (File.Exists("list.txt"))
{
string[] files = File.ReadAllLines("list.txt");
foreach(string fileName in files)
if (File.Exists(fileName))
{
Console.WriteLine(fileName);
}
else
{
throw new FileNotFoundException(fileName);
}
}
else
{
Console.WriteLine("Cannot find som' files");
}
Console.ReadKey(true);
答案 1 :(得分:2)
一种不同的方法。获取不存在的所有文件名
string fileList = @"d:\temp\list.txt";
if (File.Exists(fileList))
{
var files = File.ReadAllLines(fileList).Where(x => !File.Exists(x));
if(files.Count() > 0)
{
foreach(string missing in files)
Console.WriteLine("File missing: " + missing);
throw new FileNotFoundException("Some files are missing");
}
}
else
{
Console.WriteLine("Cannot find list file");
}
如果您不想获取遗失文件列表,可以将其更改为
var file = File.ReadAllLines(fileList).FirstOrDefault(x => !File.Exists(x));
if(file != null)
throw new FileNotFoundException("File missing " + file.ToString());
答案 2 :(得分:0)
你需要迭代你的字符串数组:
string[] files = File.ReadAllLines("list.txt");
foreach (var file in files) {
if (File.Exists(file))
{
Console.WriteLine(file);
}
else
{
Console.WriteLine("File not found for this path: {0}", file);
}
}
答案 3 :(得分:0)
试试这个:
List<string> missedFiles = new List<string>();
if (File.Exists("list.txt"))
{
foreach(var line in File.ReadLines("list.txt"))
{
if (File.Exists(line))
{
Console.WriteLine(files[1]);
}
else
{
missedFiles.Add(line);
}
}
if(missedFiles.Count>0)
{
foreach(var file in missedFiles)
Console.WriteLine(file);
}
}
Console.ReadKey(true);