【发布时间】:2017-05-30 08:04:21
【问题描述】:
我正在创建一个通过文件夹结构的程序。如果有什么变化,我想把它写到一个列表中。我的问题是我不知道在比较两个列表时如何保存 lstChanges 中的更改。 if 语句的语法是什么?这是我现在得到的:
public static void GoThroughFileSystem(DirectoryInfo x)
{
foreach (DirectoryInfo d in x.GetDirectories())
{
//Console.WriteLine("Folder: {0}", d.Name);
GoThroughFileSystem(d);
}
foreach (FileInfo f in x.GetFiles())
{
lstNew.Add(new FileData { path = f.FullName, ChangingDate = f.LastWriteTime });
if (!lstOld.Contains(new FileData { path = f.FullName, ChangingDate = f.LastWriteTime }))
{
lstChanges.Add(new FileData { path = f.FullName, ChangingDate = f.LastWriteTime });
}
}
}
【问题讨论】:
-
旧列表永远不会包含您正在内联创建的对象,您可能想要检查属性而不是整个对象
-
您如何在旧列表中存储“旧”信息?它是一个平面列表还是包含嵌套文件?
-
@goaty 我通过读取 xml 文件来存储它。 lstNew 将在应用程序执行时覆盖 xml。
-
我认为您需要存储这些旧数据。这样您就可以比较新旧数据。
标签: c# fileinfo directoryinfo