检查zip文件的文件是否存在于另一个目录中

时间:2014-03-12 14:14:59

标签: c# linq

无内容检查

我有两个目录C:\Workspace\TestProject\ZipFileA.zip\作为目录' A '和C:\Workspace\Reports\Latest\作为目录' B '......内部目录 A ,有多个日志文件,目录“ B ”内有多个日志文件......

我需要检查目录'A'的每个日志文件是否存在于目录'B'中。如果目录'A'的任何日志文件不存在或者在目录'B'中不存在,那么我需要抛出异常或返回false。基本上,A目录的文件应该出现在'B'目录中。如果'B'包含不在'A'

中的其他文件,则无问题

我如何检查并返回bool / throw异常?

1 个答案:

答案 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

相关问题