0

path1 のファイルを検索しようとしています。そのファイルが 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);

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");
        }
    }
}
4

2 に答える 2

3

を比較すると、異なるオブジェクトf1 == f2の参照が比較されます。FileInfoファイルとそのサブフォルダーの名前を比較する必要があります (フォルダー名の先頭を削除して、共通部分のみを残します)。

if (f1.FullName.Replace(path, "") == f2.FullName.Replace(path2, ""))

この比較は、ファイル名とフォルダー構造内の場所に基づいています。

于 2013-11-07T05:28:07.103 に答える