我有以下foreach-loop:
using System.IO;
//...
if (Directory.Exists(path))
{
foreach(string strFile in Directory.GetFiles(path, "*.txt"))
{
// do something, possibly delete the file named strFile
}
}
删除当前用于foreach循环的目录中的文件会有副作用吗?
答案 0 :(得分:9)
GetFiles返回一个数组,而不是迭代器,因此在引用第一个文件时操作就完成了。它也只返回文件名,而不是文件句柄,所以你应该完全安全地对它进行任何操作。
答案 1 :(得分:2)
枚举器在每次点击时都没有重新查询,所以你应该没问题 - 如果文件在你处于进程中时显示在文件夹中则不会被删除。