如果目录内容在迭代过程中发生变化,Directory.EnumerateFiles会怎样?
我已经阅读了有关 Directory.GetFiles Directory.GetFiles Directory.GetFiles . 我知道他们都在内部使用 System.IO.FileSystemEnumerableFactory.CreateFileNameIterator() 区别在于EnumerateFiles可能使用延期执行(lazy),而GetFiles() do a ToArray,因此该函数已被执行. 但是,如果在迭代期间将文件和文件夹添加到字典中会发生什么.迭代只能迭代EnumerateFiles() 期间存在的项目 更糟糕的是:如果在迭代过程中删除文件会发生什么:是否仍会迭代? 解决方案 感谢Michal Komorowski.但是,当自己尝试他的解决方案时,我看到了目录之间的显着区别. Directory.CreateDirectory(@"c:\MyTest"); // Create fies: b c e File.Create
0 2024-04-13
编程技术问答社区
System.IO.Directory.GetFiles的多个文件扩展名的搜索模式
Directory.GetFiles()上的searchPattern searchPattern设置的语法是什么?例如,用 .aspx 和 .ascx 扩展过滤文件. // TODO: Set the string 'searchPattern' to only get files with // the extension '.aspx' and '.ascx'. var filteredFiles = Directory.GetFiles(path, searchPattern); update : linq不是一个选项,它必须是searchPattern,如问题所示. 解决方案 我相信没有"开箱即用"解决方案,这是目录filefiles方法的限制. 不过要编写自己的方法很容易,这是>示例. 代码可能是: /// /// Returns file names from given folder that comply to g
0 2024-04-10
编程技术问答社区
Directory.GetFiles使用SearchPattern返回意外结果
我正在处理一个处理大量文件(超过5000个文件)的批处理程序,而我正在使用Directory.GetFiles方法面对奇怪的行为. 在此过程中,我移动匹配以下搜索模式"*.pdf"的文件,并通过Directory.GetFiles方法获取文件: 看到有时我有.pdfa文件移动. 我感到非常惊讶. 因此,我已经检查了 doc ,它明确指出,如果搜索模式包含一个带有3个字母的扩展程序,则每个具有以扩展名开头的扩展名的文件将被返回. 我已经使用一个简单的程序进行了测试,并且它的行为不像DOC中所述,它仅在非常罕见的情况下表现出来. 使用此代码: static void Main(string[] args) { var directory = @"E:\Test\"; var files = Directory.GetFiles(directory, "*.pdf"); foreach(var file in files)
4 2024-01-04
编程技术问答社区
Directory.CreateDirectory的延迟问题?
我正在尝试创建一个远程目录,然后将文件写入其中.每次出色的偶尔,该应用程序在尝试编写文件时都会使用System.IO.DirectoryNotFoundException失败. 编写文件时,我正在使用返回的DirectoryInfo对象来帮助创建文件路径,因此应用程序似乎认为已创建了该目录.但是,目录不存在. 在Windows创建它之前,我是否有可能尝试将其写入目录?我认为目录.在此任务完成之前,CREATEDIRECTORY不会返回. 解决方案 答案 - 是的.当预期文件/目录创建滞后时,行为.其他评论者提出的普通解决方案是将重试及时使用.行为与使用的任何文件函数相同:Findfirst,createFile,waitforsingleobject等. 另一个解决方案将是使用Vista和后来的Windows OS上的API的新事务功能. 问题是讨厌的,并且从其他平台上进行的文件密集型项目开发人员从未理解过:例如DOS/CMD脚本,SVN客户端,Cygwi
22 2023-12-06
编程技术问答社区
为什么我不能继承IO.Directory?
为什么不能在VB.NET中创建class inherits System.IO.Directory?根据卢兹·罗德(Lutz Roeder)的说法,不是称为NotInheritable! 我想创建一个utility class,将功能添加到Directory class.例如,我想添加Directory.Move函数. 请建议,我会给您发送六包.好的,没关系,我什么都没有给您任何东西 解决方案 来自.net的元数据 namespace System.IO { // Summary: // Exposes static methods for creating, moving, and enumerating through directories // and subdirectories. This class cannot be inherited. [ComVisible(true)] public st
10 2023-11-14
编程技术问答社区
System.IO.Directory.CreateDirectory的权限只针对当前这个用户?
我希望ASP应用程序创建一个仅访问该应用程序的文件夹(即ASP帐户?) 我实际上想使用我想获取当前的工作帐户. 谢谢. 解决方案 有一个创建DirectorySecurity实例并为命名用户添加ACE的示例rel =" nofollow noreferrer">在这里(但是使用默认构造函数以空ACL开头). 要获得帐户的SID,有两种可能性(这些需要测试): 第一种方法是依靠该过程的所有者是目录的所有者.如果进行模仿,这可能会破裂(例如,在Windows身份验证下,将客户端的身份用于访问文件系统内容): var ds = new DirectorySecurity(); var sid = new SecurityIdentifier(WellKnownSidType.CreatorOwnerSid, null) var ace = new FileSystemAccessRule(sid,
98 2022-09-23
编程技术问答社区
从目录中加载文件并添加到组合框中
我目前正在尝试将目录中存在的任何文件添加到组合框中. Dim dir = "‪C:\Users\jason\Desktop\SystemFiles" For Each file As String In System.IO.Directory.GetFiles(dir) cmbTemplateFiles.Items.Add(System.IO.Path.GetFileNameWithoutExtension(file)) Next 当执行这个程序时,它说 The given path's format is not supported 我必须添加新的头文件吗? 我的编码有什么问题吗? 解决方案 我设法重现了这个问题. 我想这与您的 dir 字符串有关,其中包含不可见的奇怪字符,例如 ‪ 使用您的代码段,我设法在 VS 2017 中显示它们,方法是在每一行上放置一个断点并将鼠标悬停在“dir"字符串上.我注意到出现奇怪字符的地方有一个问号.
110 2022-08-15
编程技术问答社区
c# Directory.GetDirectories excluding folders
我正在尝试遍历“c:\Users"中 Windows 中的用户文件夹列表,但不包括 microsoft 内置用户文件夹,以下是我用来完成此壮举的代码段,但它是由于某种原因无法按预期工作. private readonly List _exclusion = new List { "All Users", "Default", "LocalService",
4488 2022-07-19
编程技术问答社区