1

特定のファイルタイプのすべてのファイルを検索するDirectory.GetFiles(string、string)を使用しています。名前は同じで拡張子が異なる2種類のファイルがある場合、入力されたこれらのファイルリストが完全に一致することを保証できますか?

例えば)

擬似コード

 List1 -> getfiles(dir,filetype2)
 List2 -> getfiles(dir,filetype2)

リスト1とリスト2には、まったく同じ一致ファイルが保証されますか?きっとそうなると思いますが、どんな状況でも違うのではないかと思います。

正しいケース

 List1[4] is "2esDSd.filetype1"
 List2[4] is "2esDSd.filetype2"

間違ったケース

 List1[4] is "3esDSd.filetype1"
 List2[4] is "2esDSd.filetype2"

間違った入力がある可能性があるため、検証または並べ替えの別の追加レイヤーをいつでも作成できることを知っています。しかし、疑問に思うのは良い習慣ですか、それとも内部関数がどのように機能するかを考えると、実行/検証する必要はありません。

4

1 に答える 1

1

これを「保証」できるのは、ファイルシステムに実際に一致するファイルが含まれている場合のみです。その場合でも、次のように、ファイル名をアルファベット順に取得するのが最善です。

擬似コード

List1 -> getfiles(dir,filetype2).OrderBy(x => x.FileName).ToList();
List2 -> getfiles(dir,filetype2).OrderBy(x => x.FileName).ToList();

ただし、前述したように、これは存在する適切なファイルと、ディレクトリに双子がないファイルと一致しないファイルフィルタ(「* .jpg」など)によって異なります。

より堅牢な解決策は、必要な2つのファイルタイプのすべてのファイルを取得してから、次のように結果間の一致を自分で検索することです。

擬似コード

for each filename f1 in List1
    get matchine file name f2 in List2
    if it exists, add (f1, f2) to results

ここで、結果は、ファイル名が一致する2タプルのリストになります。

于 2013-02-21T15:49:23.220 に答える