C# 比较不同文件夹中的文件
我正在尝试搜索路径1中的文件。如果该文件存在于path2中,它将在listView中列出 这是我的密码。它似乎不起作用C# 比较不同文件夹中的文件,c#,file-io,C#,File Io,我正在尝试搜索路径1中的文件。如果该文件存在于path2中,它将在listView中列出 这是我的密码。它似乎不起作用 string path = @"C:\temp\code\path1"; string path2 = @"C:\temp\code\path2"; string fileType = "*.h"; DirectoryInfo d1 = new DirectoryInfo(path); DirectoryInfo d2 = new DirectoryInfo(path2);
string path = @"C:\temp\code\path1";
string path2 = @"C:\temp\code\path2";
string fileType = "*.h";
DirectoryInfo d1 = new DirectoryInfo(path);
DirectoryInfo d2 = new DirectoryInfo(path2);
foreach (FileInfo f1 in d1.GetFiles(fileType, SearchOption.AllDirectories))
{
foreach (FileInfo f2 in d2.GetFiles(fileType, SearchOption.AllDirectories))
{
if (f1 == f2)
{
lstProjectFiles.Items.Add(f1.Name).SubItems.Add(path);
}
else
{
MessageBox.Show("False");
}
}
}
当您比较
f1==f2
时,您正在比较FileInfo
对象的引用,这些对象将不同。您需要比较文件及其子文件夹的名称(我正在删除文件夹名称的开头,以便只保留公共部分):
此比较基于文件名及其在文件夹结构中的位置。当您比较
f1==f2
时,您正在比较不同的FileInfo
对象的引用。您需要比较文件及其子文件夹的名称(我正在删除文件夹名称的开头,以便只保留公共部分):
此比较基于文件名及其在文件夹结构中的位置。当您比较
f1==f2
时,您正在比较不同的FileInfo
对象的引用。您需要比较文件及其子文件夹的名称(我正在删除文件夹名称的开头,以便只保留公共部分):
此比较基于文件名及其在文件夹结构中的位置。当您比较
f1==f2
时,您正在比较不同的FileInfo
对象的引用。您需要比较文件及其子文件夹的名称(我正在删除文件夹名称的开头,以便只保留公共部分):
此比较基于文件名及其在文件夹结构中的位置。您应该只使用文件夹的name属性。FileInfo类中还有其他有用的信息,但这并不能确定这些文件是否包含相同的数据(不确定您是否正在尝试这样做)
您应该只使用的名称属性。FileInfo类中还有其他有用的信息,但这并不能确定这些文件是否包含相同的数据(不确定您是否正在尝试这样做)
您应该只使用的名称属性。FileInfo类中还有其他有用的信息,但这并不能确定这些文件是否包含相同的数据(不确定您是否正在尝试这样做)
您应该只使用的名称属性。FileInfo类中还有其他有用的信息,但这并不能确定这些文件是否包含相同的数据(不确定您是否正在尝试这样做)
具有相同名称的文件并不总是same@Anirudh是的,它们可能位于不同的子文件夹中,我会更正的。我说的是文件的内容您以前的代码是正确的。
Name
属性将只返回扩展名为的文件名。FullName。无需使用FullName。请替换@Anirudh,但同名文件可能位于不同的文件夹中。同名文件不一定总是存在same@Anirudh是的,它们可能位于不同的子文件夹中,我会更正的。我说的是文件的内容您以前的代码是正确的。Name
属性将只返回扩展名为的文件名。FullName。无需使用FullName。请替换@Anirudh,但同名文件可能位于不同的文件夹中。同名文件不一定总是存在same@Anirudh是的,它们可能位于不同的子文件夹中,我会更正的。我说的是文件的内容您以前的代码是正确的。Name
属性将只返回扩展名为的文件名。FullName。无需使用FullName。请替换@Anirudh,但同名文件可能位于不同的文件夹中。同名文件不一定总是存在same@Anirudh是的,它们可能在不同的子文件夹中,我会更正。我说的是文件的内容您以前的代码是正确的。Name
属性将只返回扩展名为的文件名。。不需要FullName。替换@Anirudh,但同名文件可能在不同的文件夹中。您如何比较这些文件!文件名、内容…具有相同名称的文件不会总是相同的。它们可能包含不同的数据!是的,我知道。在这种情况下,如果它们具有不同的数据,则path1中的文件将替换path2中的文件。如何比较这些文件!文件名、内容…具有相同名称的文件不会总是相同的。它们可能包含不同的数据!是的,我知道。在这种情况下,如果它们具有不同的数据,则path1中的文件将替换path2中的文件。如何比较这些文件!文件名、内容…具有相同名称的文件不会总是相同的。它们可能包含不同的数据!是的,我知道。在这种情况下,如果它们具有不同的数据,则path1中的文件将替换path2中的文件。如何比较这些文件!文件名、内容…具有相同名称的文件不会总是相同的。它们可能包含不同的数据!是的,我知道。在这种情况下,如果它们具有不同的数据,则path1中的文件将替换path2中的文件。
if (f1.FullName.Replace(path, "") == f2.FullName.Replace(path2, ""))
string path = @"C:\temp\code\path1";
string path2 = @"C:\temp\code\path2";
string fileType = "*.h";
DirectoryInfo d1 = new DirectoryInfo(path);
DirectoryInfo d2 = new DirectoryInfo(path2);
foreach (FileInfo f1 in d1.GetFiles(fileType, SearchOption.AllDirectories))
{
foreach (FileInfo f2 in d2.GetFiles(fileType, SearchOption.AllDirectories))
{
if (f1.Name == f2.Name)
{
// you could also test the size before comparing actual data
if (f1.Length == f2.Length)
{
Console.WriteLine(string.Format("these files might be the same: {0}, {1}", f1.Name, f2.Name));
}
//lstProjectFiles.Items.Add(f1.Name).SubItems.Add(path);
}
else
{
Console.WriteLine("False");
}
}
}