【发布时间】:2015-10-22 10:42:23
【问题描述】:
我正在尝试计算 CDROM 驱动器 F:\ 中文件夹和子文件夹中的文件总数 CDROM 上的文件总数为 58,但我下面的代码返回的文件总数为 39。所有 39 个文件都已计算在内包含在文件夹中,丢失的 19 个文件位于驱动器 F:\
的根目录中如何计算根目录以及文件夹\子文件夹中的文件?
我正在使用递归搜索,因为我发现它比 IO.Directory.EnumerateFiles(DirectoryPath, "*", IO.SearchOption.AllDirectories).Count 等更适用于 Try\Catch 异常错误。
问候
乔治
Public Sub Search1()
Dim DirectoryPath = TextBox1.Text
Dim TotalFileCount As Long = 0
Search2(DirectoryPath, TotalFileCount)
MsgBox(TotalFileCount)
End Sub
Public Sub Search2(ByVal DirectoryPath As String, ByRef TotalFileCount As Integer)
Dim FileName As String = Nothing
Try
For Each Directory In IO.Directory.GetDirectories(DirectoryPath)
For Each File In IO.Directory.GetFiles(Directory, "*")
FileName = New IO.FileInfo(File).FullName
TotalFileCount += 1
Next
Search2(Directory, TotalFileCount)
Next
Catch ua As UnauthorizedAccessException
ListBox1.Items.Add("Exception: " & ua.Message & " " & FileName)
Catch ex As Exception
ListBox1.Items.Add("Exception: " & ex.Message & " " & FileName)
End Try
End Sub
【问题讨论】:
-
@varocabas - TotalFileCount 正在 ByRef 传递。您投反对票的答案应该可以解决 OP 的问题。
-
@varocabas 如果 Infer 开启则编译。
-
@varocarbas - 让我为我们所有人(包括我自己)在发帖时犯下草率的复制/粘贴错误表示歉意。有太多的编辑和删除,在这种情况下,我不确定我要特别道歉,但我确实道歉。就个人而言,经过 45 年的编程,我仍在寻找完美。
标签: vb.net file recursion count directory