无内容检查
我有两个目录C:\Workspace\TestProject\ZipFileA.zip\
作为目录' A '和C:\Workspace\Reports\Latest\
作为目录' B '......内部目录 A ,有多个日志文件,目录“ B ”内有多个日志文件......
我需要检查目录'A'的每个日志文件是否存在于目录'B'中。如果目录'A'的任何日志文件不存在或者在目录'B'中不存在,那么我需要抛出异常或返回false。基本上,A目录的文件应该出现在'B'目录中。如果'B'包含不在'A'
中的其他文件,则无问题我如何检查并返回bool / throw异常?
答案 0 :(得分:0)
使用Intersect方法返回两个列表中的值
var dirAFiles = System.IO.Directory.GetFiles("c:\\dirA").Select(s => System.IO.Path.GetFileName(s));
var dirBFiles = System.IO.Directory.GetFiles("c:\\dirB").Select(s => System.IO.Path.GetFileName(s));
var filesInDirAAndDirB = dirAFiles.Intersect(dirBFiles );
不要忘记仅选择文件名,因为GetFiles
返回文件的完整路径
要抛出异常,只需从A列表中排除A和B中存在的文件。如果存在任何文件,则表示您有错误
if (dirAFiles.Except(filesInDirAAndDirB).Any())
{
// error
}
编辑: 之后删除的其他答案要好得多,因为没有必要从两个目录中交叉文件列表。一个简单的
dirAFiles.Except(dirBFiles).Any()
足以找出dirA中是否存在任何元素而不存在于dirB中。 哦,好吧,不像杀戮一样杀人:p