编辑:使用更多详细信息编辑问题:
我正在努力比较两个巨大的文件夹,并找出两个文件夹中常见的文件。 MSDN有使用LINQ来解决它的程序:文章MSDN
但是我有一个问题需要解决。
假设我有两个文件夹。 FolderA和FolderB。 FolderA和Folder B有两个子文件夹1和2.
a.aspx和b.aspx在FolderA和FolderB中都是相同的。注意,b.aspx比不同的子文件夹中存在。
目前的结果: C:\ FolderA \ 1 \ a.aspx C:\ FolderA \ 2 \ b.aspx
我希望结果匹配只是C:\ FolderA \ 1 \ a.aspx,因为它与文件夹结构匹配,文件也是相同的。
我是否可以修改FileCompare类来执行位于同一目录结构中的文件的比较?
或
我应该做些什么改变才能确保比较正确完成。
谢谢! Sanjeev
答案 0 :(得分:1)
要使其工作,您需要调整Equals()
功能的运行方式。我的建议如下:
path
方法提供Equals()
变量:class CompareDirs
{
static void Main(string[] args)
{
// Create two identical or different temporary folders
// on a local drive and change these file paths.
string pathA = @"C:\TestDir";
string pathB = @"C:\TestDir2";
...
成为
class CompareDirs
{
private string pathA, pathB;
static void Main(string[] args)
{
// Create two identical or different temporary folders
// on a local drive and change these file paths.
pathA = @"C:\TestDir";
pathB = @"C:\TestDir2";
...
Equals()
方法以考虑此信息:我建议使用.replace(pathA, pathB)
来比较文件的目录,就像路径是相同的一样。因此,位于相同子目录结构中的任何文件都将具有相同的目录(在执行替换操作之后)。
public bool Equals(System.IO.FileInfo f1, System.IO.FileInfo f2)
{
return (f1.Name == f2.Name &&
f1.Length == f2.Length &&
f1.DirectoryName.replace(pathA, pathB) == f2.DirectoryName.replace(pathA, pathB) );
}