为了清理测试文件,我尝试执行以下操作。但它不清除文件以及不生成错误。
我错过了一些明显的东西吗?
private void CleanUpTempDirFiles()
{
var fileGenerationDir = new DirectoryInfo(Path.Combine(Path.GetTempPath(), "TestFilesDir"));
fileGenerationDir.GetDirectories().ToList().ForEach(dir => dir.GetFiles().ToList().ForEach(file => file.Delete()));
}
答案 0 :(得分:9)
您可以使用SearchOption.AllDirectories
获取所有子目录中的所有文件 fileGenerationDir.GetFiles("*", SearchOption.AllDirectories).ToList().ForEach(file=>file.Delete());
答案 1 :(得分:1)
这样做:
string[] filePaths = Directory.GetFiles(
Path.Combine(Path.GetTempPath(), "TestFilesDir")
,
"*",
SearchOption.AllDirectories);
foreach (var filePath in filePaths)
File.Delete(filePath);
答案 2 :(得分: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
。
How to: Iterate Through a Directory Tree (C# Programming Guide)
答案 3 :(得分:0)
如果文件存储在TestFilesDir文件夹中,则不必使用它的子目录,只需使用:
fileGenerationDir.GetFiles().ToList().ForEach(file => file.Delete());
否则您只删除子文件夹的文件
答案 4 :(得分:0)
private void CleanUpTempDirFiles() {
var fileGenerationDir = new DirectoryInfo(
Path.Combine(Path.GetTempPath(), "TestFilesDir"));
fileGenerationDir.GetFiles().ToList().ForEach(file => file.Delete());
}