微信扫一扫关注
如已关注,请回复“登录”二字获取验证码
欢迎来到桔子雨工作室官方网站!桔子雨工作室是一个软件和信息技术服务提供商,为中小微企业提供数字化价值。

在处理大量文件(如100万个文件)时,效率至关重要。本文将介绍一种基于 VB.NET 的高效方法,利用 Directory.EnumerateFiles 和多线程来快速获取文件名。
Directory.EnumerateFiles:
Parallel.ForEach 并行处理文件名,利用多核 CPU 提高速度。ConcurrentBag 存储文件名,确保在多线程环境中安全添加文件。以下是实现该方法的示例代码:
Imports System.IO
Imports System.Threading.Tasks
Imports System.Collections.Concurrent
Module Module1
Sub Main()
Dim watch As System.Diagnostics.Stopwatch = System.Diagnostics.Stopwatch.StartNew()
Dim fileNames = ProcessFilesAsync("C:\your\directory\path").GetAwaiter().GetResult()
watch.Stop()
Console.WriteLine($"Total time: {watch.Elapsed.TotalSeconds} seconds")
Console.WriteLine($"Total files processed: {fileNames.Count}")
End Sub
Private Async Function ProcessFilesAsync(directoryPath As String) As Task(Of List(Of String))
Dim results As New ConcurrentBag(Of String)() ' 线程安全的集合
Await Task.Run(Sub()
Dim fileNames = Directory.EnumerateFiles(directoryPath, "*.*", SearchOption.AllDirectories)
Parallel.ForEach(fileNames, Sub(fileName)
results.Add(fileName) ' 添加文件名到集合
End Sub)
End Sub)
' 将结果转为 List
Return results.ToList()
End Function
End Module
本方法为处理大量文件名提供了一种高效的解决方案。通过合理利用 VB.NET 的并行处理能力和线程安全的数据结构,能够在保持高效的同时确保程序的稳定性和可靠性。