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

如果文件存储在 TestFilesDir 文件夹中,则不必获取它的子目录,只需使用:

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

否则你只删除子文件夹的文件

于 2012-11-28T11:29:24.243 回答
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 回答