You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET新手求助:如何用Directory.GetFiles获取C盘全部文件

解决VB.NET中Directory.GetFiles获取C盘所有文件的问题

嘿,作为VB.NET新手碰到这个问题太正常了!我来一步步帮你搞定它,先从你可能踩的坑说起:

1. 你可能不小心加了文件筛选器

如果你的代码是类似这样的:

Dim exeFiles = Directory.GetFiles("C:\", "*.exe")

那当然只会找到.exe格式的文件啦!要获取所有文件,你需要用不带筛选器的重载,或者用通配符*匹配所有文件:

' 两种写法都能获取当前目录下的所有文件
Dim allFilesInRoot = Directory.GetFiles("C:\")
Dim allFilesInRoot2 = Directory.GetFiles("C:\", "*")

2. 默认只获取当前目录,不包含子目录

上面的代码只能拿到C盘根目录的文件,要遍历所有子目录里的文件,得加上SearchOption.AllDirectories参数:

Dim allFiles = Directory.GetFiles("C:\", "*", SearchOption.AllDirectories)

但这里会碰到一个大问题:权限不足!

3. 处理C盘的权限限制

C盘里的Windows、Program Files、System Volume Information等目录需要管理员权限才能访问,直接运行代码会抛出UnauthorizedAccessException异常,导致整个遍历中断。

解决这个问题的最佳方式是自己写递归遍历方法,捕获异常并跳过无法访问的目录,这样就能尽可能收集所有能访问的文件:

Imports System.IO

Module FileScanner
    Sub Main()
        Dim allAccessibleFiles As New List(Of String)()
        ScanAllFiles("C:\", allAccessibleFiles)

        Console.WriteLine($"成功找到 {allAccessibleFiles.Count} 个可访问文件")
        ' 遍历输出文件路径(可选)
        For Each filePath In allAccessibleFiles
            Console.WriteLine(filePath)
        Next
    End Sub

    Private Sub ScanAllFiles(ByVal targetPath As String, ByVal filesList As List(Of String))
        Try
            ' 先收集当前目录的所有文件
            For Each file In Directory.GetFiles(targetPath)
                filesList.Add(file)
            Next

            ' 递归遍历所有子目录
            For Each subDir In Directory.GetDirectories(targetPath)
                ScanAllFiles(subDir, filesList)
            Next
        Catch ex As UnauthorizedAccessException
            ' 跳过无权限的目录,打印提示
            Console.WriteLine($"跳过无权限目录: {targetPath}")
        Catch ex As DirectoryNotFoundException
            ' 跳过已删除或不存在的目录
            Console.WriteLine($"目录不存在,已跳过: {targetPath}")
        End Try
    End Sub
End Module

几个重要提示

  • 右键以管理员身份运行你的VB.NET程序,能减少很多权限问题(但仍有部分系统目录无法访问)
  • C盘文件数量极大,第一次遍历可能需要几分钟,测试时可以先换成小目录(比如C:\Users\你的用户名\Desktop)
  • 别忘了在代码顶部引用System.IO命名空间,否则Directory类会报错

内容的提问来源于stack exchange,提问作者user9641135

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:31:02