![](/img/trans.png)
[英]Recursively delete empty folders until not empty directory is found up the dir-tree
[英]Recursively delete files from a Directory but keeping the dir structure intact
為了清理測試文件,我嘗試執行以下操作。 但它不清除文件以及不生成錯誤。
我錯過了一些明顯的東西嗎
private void CleanUpTempDirFiles()
{
var fileGenerationDir = new DirectoryInfo(Path.Combine(Path.GetTempPath(), "TestFilesDir"));
fileGenerationDir.GetDirectories().ToList().ForEach(dir => dir.GetFiles().ToList().ForEach(file => file.Delete()));
}
您可以使用SearchOption.AllDirectories獲取所有子目錄中的所有文件
fileGenerationDir.GetFiles("*", SearchOption.AllDirectories).ToList().ForEach(file=>file.Delete());
這樣做:
string[] filePaths = Directory.GetFiles(
Path.Combine(Path.GetTempPath(), "TestFilesDir")
,
"*",
SearchOption.AllDirectories);
foreach (var filePath in filePaths)
File.Delete(filePath);
您首先使用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
。
如果文件存儲在TestFilesDir文件夾中,則不必使用它的子目錄,只需使用:
fileGenerationDir.GetFiles().ToList().ForEach(file => file.Delete());
否則你只刪除子文件夾的文件
private void CleanUpTempDirFiles() {
var fileGenerationDir = new DirectoryInfo(
Path.Combine(Path.GetTempPath(), "TestFilesDir"));
fileGenerationDir.GetFiles().ToList().ForEach(file => file.Delete());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.