我必须测试在目录中按名称查找文件时它不存在并且它在屏幕上向我指示。我向您展示我的代码,问号注释是我遇到问题的地方,其余的工作正常:
static void recorrerDirectoriosYCompararPorFicheros(string dir1, string dir2)
{
System.IO.DirectoryInfo dirOrigenInfo = new DirectoryInfo(dir1);
System.IO.DirectoryInfo dirDestinoInfo = new DirectoryInfo(dir2);
System.IO.FileInfo[] fileDirOrigenNames = dirOrigenInfo.GetFiles("*.*");
System.IO.FileInfo[] fileDirDestinoNames = dirDestinoInfo.GetFiles("*.*");
for (int i = 0; i <= (fileDirOrigenNames.Length) - 1; i++)
{
System.IO.FileInfo file = fileDirOrigenNames[i];
for (int j = 0; j <= (fileDirDestinoNames.Length) - 1; j++)
{
System.IO.FileInfo file2 = fileDirDestinoNames[j];
if (file.Name.Equals(file2.Name))
{
mostrarResultadoComparacionPropiedades(file.FullName, file2.FullName);
}
else//????????????????????
{
Console.WriteLine("\nEl archivo {0} no existe en {1}", file.Name, dir2);
}
}
}
}
在这里我留下结果,它通过比较告诉我它是否存在,我想要的是遍历目录并只告诉我一次它是否存在,不存在的文件是c.txt
:创建日期或上次修改否相同文件 C:\Projects\Folder\a.txt 和 C:\Projects\Folder taDestino\a.txt 在创建日期和上次修改时不同
C:\Projects\DestinationFolder 中不存在 a.txt 文件
C:\Projects\DestinationFolder 中不存在 a.txt 文件
C:\Projects\DestinationFolder 中不存在 a.txt 文件
C:\Projects\DestinationFolder 中不存在 c.txt 文件
C:\Projects\DestinationFolder 中不存在 c.txt 文件
创建日期和最后一次修改相同 C:\Projects\FolderSource\c.txt 和 C:\Projects\FolderDestin o\c.txt 在创建日期和最后修改日期上是相同的
C:\Projects\DestinationFolder 中不存在 c.txt 文件
C:\Projects\DestinationFolder 中不存在 Configuration.ini 文件
C:\Projects\DestinationFolder 中不存在 Configuration.ini 文件
C:\Projects\DestinationFolder 中不存在 Configuration.ini 文件
创建日期或最后修改日期不同 C:\Projects\FolderFolder\Configuration.ini 和 C:\Projects\FolderDestination\Configuration.ini 文件的创建日期和最后修改日期不同
在您的代码中,您从源目录中获取每个文件,并将其与目标目录中的每个现有文件进行比较。在每次比较中,如果名称不匹配,您就会断定该文件不存在(错误地因为它与第一个文件不匹配并不意味着它不会与另一个文件匹配),但您继续查找。
您应该做的是在所有目标文件中搜索源文件的名称,最后确定是否找到它。
为了简化您的代码,您可以使用 LINQ 而不是嵌套循环:
我会使用 Linq 并
Contains
检查您正在解析的名称在目标集合中是否不存在: