8

テストファイルをクリーンアップするために、以下を実行しようとしています。しかし、それはファイルをクリアしないだけでなく、エラーを生成しません。

明らかな何かが欠けていますか?

    private void CleanUpTempDirFiles()
    {
        var fileGenerationDir = new DirectoryInfo(Path.Combine(Path.GetTempPath(), "TestFilesDir"));

        fileGenerationDir.GetDirectories().ToList().ForEach(dir => dir.GetFiles().ToList().ForEach(file => file.Delete()));
    }
4

5 に答える 5

9

SearchOption.AllDirectoriesを使用して、すべてのサブディレクトリ内のすべてのファイルを取得できます。

 fileGenerationDir.GetFiles("*", SearchOption.AllDirectories).ToList().ForEach(file=>file.Delete());
于 2012-11-28T11:38:01.280 に答える
1

これはそれを行います:

        string[] filePaths = Directory.GetFiles(
            Path.Combine(Path.GetTempPath(), "TestFilesDir")
            , 
            "*", 
            SearchOption.AllDirectories);

        foreach (var filePath in filePaths)
            File.Delete(filePath);
于 2012-11-28T11:38:30.047 に答える
1

最初に使用しているGetDirectoriesのは、一時フォルダ内のすべてのサブディレクトリを返します。したがって、このディレクトリ内のファイルは返されません。したがって、代わりにこれを実行することをお勧めします。

var tempDir = Path.Combine(Path.GetTempPath(), "TestFilesDir");
var allFilesToDelete = Directory.EnumerateFiles(tempDir, "*.*", SearchOption.AllDirectories);
foreach (var file in allFilesToDelete)
    File.Delete(file);

を削除し、再帰的に検索するToListsを使用しました。SearchOption.AllDirectories

方法:ディレクトリツリーを反復処理する(C#プログラミングガイド)

于 2012-11-28T11:38:59.223 に答える
0
private void CleanUpTempDirFiles() {
        var fileGenerationDir = new DirectoryInfo(
            Path.Combine(Path.GetTempPath(), "TestFilesDir"));

        fileGenerationDir.GetFiles().ToList().ForEach(file => file.Delete());            
    }
于 2012-11-28T11:37:38.243 に答える
0

ファイルがTestFilesDirフォルダー内に保存されている場合は、そのサブディレクトリを取得する必要はありません。次のように使用します。

fileGenerationDir.GetFiles().ToList().ForEach(file => file.Delete());

それ以外の場合は、サブフォルダーのファイルのみを削除します

于 2012-11-28T11:29:24.243 に答える