【发布时间】:2012-02-08 12:49:51
【问题描述】:
我有一个包含 try catch 和 finally 的 foreach 循环。它遍历文件夹中的文件,最后将它们全部删除....但是现在如果我有两个文件,因为它正在删除所有文件(由于应用程序功能,我需要删除所有文件)它不会通过第二个文件。是否可以让 foreach 循环完成然后删除 foreach 方法中的所有文件这是一个示例:
foreach (DirectoryInfo directory in directories)
{
foreach (FileInfo file in directory.GetFiles("*.csv"))
{
try
{
//do something with file
}
catch (Exception e)
{
//catch exception
}
finally
{
if (!IsFileLocked(file))
{
string[] files = Directory.GetFiles(@"C:\Test");
foreach (string filetoDelete in files)
{
File.Delete(filetoDelete);
}
}
}
}
}
希望它足够清楚。
【问题讨论】:
-
在循环遍历每个文件时删除它们,否则不需要循环。
-
最好使用 FOR 循环而不是 foreach。
-
但是我有与该文件相关的图像,我也需要清除图像
-
将文件删除代码部分保留在目录循环之外,它将一次删除所有文件,如果您想在每次目录检查后删除文件,请将其保留在 fileinfo 循环之外。
-
C:\Test和directories是什么关系?
标签: c# loops try-catch finally