- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经阅读了关于 Directory.EnumerateFiles
之间差异的讨论和 Directory.GetFiles
.
我知道他们在内部都使用System.IO.FileSystemEnumerableFactory.CreateFileNameIterator()
不同的是EnumerateFiles
可能会使用延迟执行(懒惰),而 GetFiles()
做 ToArray
,所以函数已经执行了。
但是如果在迭代过程中将文件和文件夹添加到字典中会发生什么。迭代是否仅迭代 EnumerateFiles()
期间存在的项目? ?
更糟糕的是:如果在迭代过程中删除文件会发生什么:它们还会被迭代吗?
最佳答案
感谢 Michal Komorowski。然而,当我自己尝试他的解决方案时,我发现 Directory.EnumerateFiles 和 Directory.GetFiles() 之间存在显着区别:
Directory.CreateDirectory(@"c:\MyTest");
// Create fies: b c e
File.CreateText(@"c:\MyTest\b.txt").Dispose();
File.CreateText(@"c:\MyTest\c.txt").Dispose();
File.CreateText(@"c:\MyTest\e.txt").Dispose();
string[] files = Directory.GetFiles(@"c:\MyTest");
var fileEnumerator = Directory.EnumerateFiles(@"c:\MyTest");
// delete file c; create file a d f
File.Delete(@"c:\MyTest\c.txt");
File.CreateText(@"c:\MyTest\a.txt").Dispose();
File.CreateText(@"c:\MyTest\d.txt").Dispose();
File.CreateText(@"c:\MyTest\f.txt").Dispose();
Console.WriteLine("Result from Directory.GetFiles");
foreach (var file in files) Console.WriteLine(file);
Console.WriteLine("Result from Directory.EnumerateFiles");
foreach (var file in fileEnumerator) Console.WriteLine(file);
Result from Directory.GetFiles
c:\MyTest\b.txt
c:\MyTest\c.txt
c:\MyTest\e.txt
Result from Directory.EnumerateFiles
c:\MyTest\b.txt
c:\MyTest\d.txt
c:\MyTest\e.txt
c:\MyTest\f.txt
关于c# - 如果目录内容在迭代过程中发生变化,Directory.EnumerateFiles 会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29555761/
成员函数DirectoryInfo::EnumerateFiles只能抛出 DirectoryNotFoundException 和 SecurityException 而静态函数 Directory
我正在编写一个程序,当给定日期、文件夹路径和文件扩展名时,该程序将查看文件夹并查找上次访问时间从月初到当前日期的所有文件,并且只有具有传递的文件扩展名的文件。 我要查找的文件始终位于文件夹树中的同一级
我正在使用 EnumerateFiles 获取目录中的所有 *.md: foreach (var mdName in Directory.EnumerateFiles(Path.Combine(Bas
作为一个简化的示例,我正在执行以下操作 IEnumerable files = Directory.EnumerateFiles(path, @"2010*.xml", SearchOptio
根据Microsoft Docs site for Directory.EnumerateFiles ,搜索模式参数将匹配任何以指定模式开头的扩展名,只要它正好是 3 个字符。但是,这不适用于文件共享
.NET 4.0 中有一个很好的新方法,可以通过枚举以流式方式获取目录中的文件。 这里的问题是,如果希望枚举所有文件,则可能无法提前知道哪些文件或文件夹受到访问保护,并且可能会抛出 Unauthori
我想要一个文件夹中所有 xml 文件的列表,如下所示: foreach (var file in Directory.EnumerateFiles(folderPath, "*.xml")) {
在我问的问题中Retrieve a list of filenames in folder and all subfolders quickly还有一些我发现的,似乎搜索许多文件的方法是使用 Enum
所以我正在开发一个程序,它将列出目录中的所有文件。很简单。基本上,当我这样做时:List dirs = new List(Directory.EnumerateFiles(target)); ,我不希
下面的语句有错误,帮忙修正 long siz = dirinfo.EnumerateFiles().Sum(file => file.length); 'System.IO.DirectoryInf
我正在尝试编写一个程序来将我的 SQL 数据库备份文件复制到 NAS。它以前是工作的,但后来我添加了检查路径是否存在,现在当它试图复制文件时它得到一个异常说“System.IO.IOException
我有一个非常罕见的行为。 我正在使用 Windows 10 x64 和 Visual Studio 2013,当我在 32 位应用程序中运行此代码时 Directory.EnumerateFiles(
我目前有一个扫描网络共享的程序。为此,它首先枚举共享上的所有文件和目录。这是一个非常缓慢的过程。我目前使用以下代码,摘自本网站 2011 年的回答。 static class SafeWalk
我有一个包含 2 个文件的目录: 文件1.xls 文件2.xlsx 如果我这样做: directoryInfo.EnumerateFiles("*.xls", SearchOption.TopDire
对于我的 WPF 项目,我必须计算单个目录(可能有子目录)中的总文件大小。 示例 1 DirectoryInfo di = new DirectoryInfo(path); var totalLeng
Directory.EnumerateFiles 方法的默认读取顺序是什么?是否一致? 根据我目前的经验,这似乎是文件创建的日期,但我无法找到对此的确认。 我问的原因是因为我正在处理的程序的一部分将二
我有以下代码: List result = new List(); foreach (string file in Directory.EnumerateFiles(path,"*.*",
在 .NET 4 中,有这个 Directory.EnumerateFiles()看起来很方便的递归方法。 但是,如果在递归中发生异常,我如何继续/恢复并继续枚举其余文件? try { var f
msdn ( https://msdn.microsoft.com/en-us/library/dd383458(v=vs.110).aspx) 说: EnumerateFiles 和 GetFile
我已经阅读了关于 Directory.EnumerateFiles 之间差异的讨论和 Directory.GetFiles . 我知道他们在内部都使用System.IO.FileSystemEnume
我是一名优秀的程序员,十分优秀!