C# foreach循环
我有一个foreach循环,它有try-catch和finally。它遍历文件夹中的文件,最后将它们全部删除……但现在如果我有两个文件,因为它正在删除所有文件(由于应用程序的功能,我需要删除所有文件),它将不会通过第二个文件。是否可以让foreach循环完成,然后删除foreach方法中的所有文件?以下是一个示例:C# foreach循环,c#,loops,try-catch,finally,C#,Loops,Try Catch,Finally,我有一个foreach循环,它有try-catch和finally。它遍历文件夹中的文件,最后将它们全部删除……但现在如果我有两个文件,因为它正在删除所有文件(由于应用程序的功能,我需要删除所有文件),它将不会通过第二个文件。是否可以让foreach循环完成,然后删除foreach方法中的所有文件?以下是一个示例: foreach (DirectoryInfo directory in directories) { foreach (FileInfo file in directory.
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);
}
}
}
}
}
希望它足够清楚。我不太确定我是否正确理解了您的要求,但对我来说,这似乎是一个非常琐碎的解决方案,如下所示:
foreach (DirectoryInfo directory in directories)
{
foreach (FileInfo file in directory.GetFiles("*.csv"))
{
try
{
//do something with file
}
catch (Exception e)
{
//catch exception
}
}
foreach(FileInfo fileToDeleteInfo...)
{
try
{
if (!IsFileLocked(fileToDeleteInfo))
{
string[] files = Directory.GetFiles(@"C:\Test");
foreach (string filetoDelete in files)
{
File.Delete(filetoDelete);
}
}
}
catch(...)
{... }
}
换句话说,将文件删除从第二个(嵌套的)foreach
移动到新的
如果这不是您的要求,请澄清。您的代码:
您不应该删除刚处理的文件,或者至少是当前正在处理的目录中的文件,而不是“C:\Test”中的文件吗?在循环过程中删除每个文件,否则不需要循环。最好使用FOR loop而不是foreach。但是,如果我有与该文件相关的图像,我需要清除图像,同时将文件删除代码部分保留在目录循环之外,它将一次删除所有文件,如果要在每次目录检查后删除文件,请将其保留在fileinfo循环之外。问题是什么
C:\Test
和目录之间的关系?