- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
它seems like FileSystem.GetFiles()无法从.Net在尝试访问禁区目录时触发的UnauthorizedAccessException异常中恢复。
在这种情况下,这是否意味着该类/方法在扫描整个驱动器时没有用,我应该使用其他解决方案(在哪种情况下:哪个?)?
这是一些显示问题的代码:
Private Sub bgrLongProcess_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles bgrLongProcess.DoWork
Dim drive As DriveInfo
Dim filelist As Collections.ObjectModel.ReadOnlyCollection(Of String)
Dim filepath As String
'Scan all fixed-drives for MyFiles.*
For Each drive In DriveInfo.GetDrives()
If drive.DriveType = DriveType.Fixed Then
Try
'How to handle "Access to the path 'C:\System Volume Information' is denied." error?
filelist = My.Computer.FileSystem.GetFiles(drive.ToString, FileIO.SearchOption.SearchAllSubDirectories, "MyFiles.*")
For Each filepath In filelist
DataGridView1.Rows.Add(filepath.ToString, "temp")
'Trigger ProgressChanged() event
bgrLongProcess.ReportProgress(0, filepath)
Next filepath
Catch Ex As UnauthorizedAccessException
'How to ignore this directory and move on?
End Try
End If
Next drive
End Sub
Private Sub bgrLongProcess_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles bgrLongProcess.DoWork
'Do lengthy stuff here
Dim filelist As Collections.ObjectModel.ReadOnlyCollection(Of String)
Dim filepath As String
filelist = Nothing
Try
filelist = My.Computer.FileSystem.GetFiles("C:\", FileIO.SearchOption.SearchAllSubDirectories, "MyFiles.*")
Catch ex As UnauthorizedAccessException
'How to just ignore this off-limit directory and resume searching?
End Try
'Object reference not set to an instance of an object
For Each filepath In filelist
bgrLongProcess.ReportProgress(0, filepath)
Next filepath
End Sub
最佳答案
将您的try catch语句放入For each filepate in filelist
循环中。因为现在,当您捕获UnauthorizedAccessException
时,将跳过其余的filelist
项。
编辑
你是对的。引发异常时,try-catch开销很大,通常您想在引发异常之前尝试检测这种情况。在这种情况下,执行此操作的一种方法是在执行任何操作之前检查对文件的访问权限。
对于目录,有this GetAccessControl函数。有is a similar function文件。
您可能必须中断GetFiles函数才能仅最初获取目录,然后递归地遍历每个目录,始终为每个目录和文件调用GetAccessControl
。
关于vb.net - FileSystem.GetFiles()+ UnauthorizedAccessException错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2449700/
我写了一些代码来获取目录中的文件。为此,我使用了 Directory.GetFiles 方法。我以前用过它,所以我知道它存在并且有效。 所以我开始使用它(我正在使用 System.IO 命名空间),它
System.IO.Directory.GetFiles() 返回一个string[]。返回值的默认排序顺序是什么?我是按名字假设的,但如果是的话,当前的文化对其影响有多大?您可以将其更改为创建日期之
这个问题在这里已经有了答案: Exact file extension match with GetFiles()? (8 个答案) 关闭 4 年前。 我需要获取指定文件夹的所有子文件夹中的所有 .
我在一个临时文件夹中有几个文件。我可以使用以下脚本将它们加载到 Photoshop 中: var sourceFolder = Folder("C:\\temp"); if (sourceFo
我尝试在 ImageJ 插件中使用 java.awt.FileDialog,但由于某种原因,我收到一个错误,指出 Java 找不到 getFiles 方法: C:\File_Opener3.java:
我需要每天从网络驱动器复制文件。为此,我尝试了以下方法: var dir = new DirectoryInfo(@"Z:\"); var filesA300 = dir.GetFil
使用下面的代码,我能够获取名称中包含 string 的所有文件: DirectoryInfo dirInf = new DirectoryInfo(path); FileInfo[] fInfArra
是否有更有效的方法来从带有日期过滤器的目录中填充文件名列表? 目前,我正在这样做: foreach (FileInfo flInfo in directory.GetFiles()) { Da
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Can you call Directory.GetFiles() with multiple filter
我有这个基本代码 Directory.GetFiles(filepath, "*.OUT") 文件路径中有一个名为 Filename.OUT 的文件。 上面的代码可以很好地找到该文件。 现在,我通过附
我有一个包含 2 个子文件夹的文件夹,每个子文件夹包含大约 1000 个文件。这些文件如下所示: 38485303_SARA_N211_T.ygx 38485303_SARA_N211_B.ygx 3
TDirectory.GetFiles 有一个名为 SearchPattern 的参数。 Embarcadero 的文档显示 The mask used when matching file name
我正在使用 Directory.GetFiles 从特定文件夹中获取文件。默认情况下,该文件夹中的文件将按文件名排序,即。按文件名的字母顺序排列。我想按照文件修改的顺序获取文件。 我无法使用 Dire
我正在尝试实现一种将文件上传到特定本地目录的方法。 我认为: 这是在我的 Controller 操作中: def upload(){ def f
我正在实现带有输入字段和文件上传的简单表单。我浏览了教程:http://grails.org/Simple+Avatar+Uploader和文档:http://grails.org/doc/2.0.x
我在运行 System.IO.Directory.GetFiles("my_directory_name_on_network")并且对大多数 11320 来说都很好目录中的文件,但其中一个在那里两次
我在以下代码段中遇到行为差异 DirectoryInfo di = new DirectoryInfo("c:\"); FileInfo[] textFiles = di.GetFiles("log_
我有以下代码: private string[] FindExistingDocuments() { string supportedImageFormats = "jpg,pdf,doc,d
我想计算文件夹中具有特定扩展名且大小超过 X kb 的文件数。任何人都可以帮忙解决这个问题吗? 我可以做扩展部分: Directory.GetFiles("c:\\temp\\", "*.txt",
我想使用 Directory.GetFiles 从文件夹中读取文件。从msdn网站我发现:对于c,我包括: using System; using System.IO; 对于 C++,我包括: #us
我是一名优秀的程序员,十分优秀!