2012-03-05 19 views
1

私は、1つのメンバーがファイルへのフルパスであるクラスの配列を持っています。配列に含まれていないディレクトリからそれらのファイルをすべて削除する必要があります。通常通り、私はconventialの比較と削除の方法を使用しています。私はこれを達成するための速い方法があるかどうかを知る必要があります。 私はそれがLinqを使って行うことができると聞いたが、私はlinqに関する知識を持っていない。ディレクトリ内のファイルを検索して削除する最速の方法

私のクラス構造は以下の通りです。

Class ImageDetails 
{ 

public string Title; 

public Boolean CanShow; 

public String PathToFile; 
} 

私はImageDetailsの配列を持っています。あなたが比較する必要がないのはなぜ

var filesToDelete = Directory.GetFiles(Path.GetDirectoryName(yourClass.FilePath)).Except(yourClass.TheArray); 
+0

forループはどうですか? – loyalpenguin

+1

@RowlandShaw私はOPがディレクトリ内の他の*ファイルをすべて削除しようとしていると思う。 –

+1

あなたの 'convential compare and delete'は何が問題なのですか? –

答えて

4

完全なパスが含まれていますか?完全なファイル名をお持ちの場合は、

File.Delete(fileName); 

すべてが必要です。ファイルIOはこれの最も遅い部分である可能性が高いので、私はLinqがパフォーマンスに大きな違いをもたらすとは思わない。

ファイルには、その最初のためにチェックし、存在しない場合があります。

if (File.Exists(fileName)) 
{ 
    File.Delete(fileName); 
} 

編集:私は、それが配列でない場合は、あなたがファイルを削除することを意味参照してください。私はディレクトリが配列に含まれていないことを意味するあなたの質問を読んでいます。

なお、実際のファイルの削除は、この中で最も遅くなる可能性があります。

0

:PathToFileは、あなたがこれを処理するために)(除いて使用することができます

}

関連する問題