Dim dirs As List(Of String) dirs = New List(Of String)(IO.Directory.EnumerateDirectorIEs(path,"*",SearchOption.AllDirectorIEs))
以下代码大部分工作正常,但由于连接点,在c: users documents文件夹中总是失败。
我得到以下exception和堆栈跟踪。
有没有一种方法来排除连接点和使用EnumerateDirectorIEs或将不得不编写代码手动获取目录名称和忽略/处理交界点?
@H_404_9@例外:
{“访问path'C: Users jkfredri documents 我的音乐'被拒绝。”}
file.copy()从networking共享到另一个共享在同一台机器上通过networking复制文件?
命令行窗口编译器(cl.exe)目标
C#:什么是最快的方式来生成一个唯一的文件名?
从windows机器与SSH会话交互的最简单方法?
在C#中使用Socket改进TCP转发器
@H_404_9@堆栈跟踪:
System.IO.fileSystemEnumerableIterator 1.AddSearchableDirsToStack(SearchData localSearchData)" & vbCrLf & " at System.IO.fileSystemEnumerableIterator ”在System.IO.__ Error.WinIOError(Int32 errorCode,String maybeFullPath)“&vbCrLf&”1.MoveNext() System.Collections.Generic.List中的“&vbCrLf&” 1..ctor(IEnumerable 1集合)“&vbCrLf&”位于C: Users \ Visual Studio中BUDwindows.BUD.fileSystem.Directory.GetDirectorIEsList(String path) Projects Desktop Applications BUDwindows Classes fileSystemManager.vb:第292行“
处理丢失的.NET Framework(0xc0000135)崩溃更好?
如何在windows窗体上显示必填字段
在任何应用程序中监视select
混合托pipe/非托pipeassembly加载顺序
如何通过互联网更新.net windows应用程序
有一个fileAttribute指示它是否是一个reparsepoint条目。 为了解决这个问题,你需要一个DirectoryInfo对象。 由于每一个都需要测试,你可以使用DirectoryInfo.EnumerateDirectorIEs()来获取它们的列表,而不是从你得到的名字中逐一创建它们。
然后,如果您只想要名称,请在reparsepoint被排除后Select该名称。 扩展方法可以完成大部分的工作:
Dim dInfo = New DirectoryInfo(dpath) Dim Dirnames = dInfo.EnumerateDirectorIEs("*.*",SearchOption.topDirectoryOnly). Where(Function(q) IsReparse(q) = False). Select(Function(q) q.Fullname). ToList() For Each s As String In Dirnames.ToArray() Dirnames.AddRange(Directory. EnumerateDirectorIEs(s,"*.*",SearchOption.AllDirectorIEs)) Next
然后,一个帮手方法:
Private Function IsReparse(d As DirectoryInfo) As Boolean Return ((d.Attributes And fileAttributes.reparsepoint) = fileAttributes.reparsepoint) End Function
这将获取Reparse属性为false的顶级文件夹名称,然后迭代这些名称以获取子文件夹名称。 前提是Reparse文件夹将仅位于顶层。 然后就这样,它只是将子文件夹添加到列表中。
显然,即使首先对reparsepoint进行测试也不会阻止它使用SearchOption.AllDirectorIEs查找它们中的子文件夹。
您可以将fileAttributes测试放在WHERE方法中,但是根据您在做什么,您可能会发现您也想跳过具有System属性的测试。
总结以上是内存溢出为你收集整理的如何在使用IO.Directory.EnumerateDirectories时忽略Documents文件夹中的连接点全部内容,希望文章能够帮你解决如何在使用IO.Directory.EnumerateDirectories时忽略Documents文件夹中的连接点所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)