TheDeveloperBlog.com

Home | Contact Us

C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML

<< Back to VBNET

VB.NET Recursive File Directory Function

Recursively scan directories for files using a Stack collection to store results.
Recursive files. A program needs to recurse through all directories. It starts at a certain point. It then lists all the file paths in those directories. We can use an efficient and bug-free VB.NET Function for this purpose.FunctionFile
Example. First, this is the code for the VB.NET Function that traverses through all subdirectories and then all further subdirectories. It returns a List(Of String), which is often used for file paths.Path

Stack: It uses Stack to build up a list of paths it needs to process. It then processes each directory path in the stack, adding all the files each time.

Stack

Main: The Main sub here shows how to call FileHelper.GetFilesRecursive and specify a path string.

Tip: The path string must specify an absolute path, or one relative to the program. Here, we specify a C:\ path on my computer.

VB.NET program that recurses directories Imports System.IO ''' <summary> ''' This class contains directory helper method(s). ''' </summary> Public Class FileHelper ''' <summary> ''' This method starts at the specified directory. ''' It traverses all subdirectories. ''' It returns a List of those directories. ''' </summary> Public Shared Function GetFilesRecursive(ByVal initial As String) As List(Of String) ' This list stores the results. Dim result As New List(Of String) ' This stack stores the directories to process. Dim stack As New Stack(Of String) ' Add the initial directory stack.Push(initial) ' Continue processing for each stacked directory Do While (stack.Count > 0) ' Get top directory string Dim dir As String = stack.Pop Try ' Add all immediate file paths result.AddRange(Directory.GetFiles(dir, "*.*")) ' Loop through all subdirectories and add them to the stack. Dim directoryName As String For Each directoryName In Directory.GetDirectories(dir) stack.Push(directoryName) Next Catch ex As Exception End Try Loop ' Return the list Return result End Function End Class Module Module1 ''' <summary> ''' Entry point that shows usage of recursive directory function. ''' </summary> Sub Main() ' Get recursive List of all files starting in this directory. Dim list As List(Of String) = FileHelper.GetFilesRecursive("C:\Users\Sam\Documents\Perls") ' Loop through and display each path. For Each path In list Console.WriteLine(path) Next ' Write total number of paths found. Console.WriteLine(list.Count) End Sub End Module
Output. The output of the program on my computer is a list of 677 file paths. Each path is fully specified and absolute. They are ordered alphabetically. The sample next shows three of the first several lines printed.

Note: I checked the directory in Windows Explorer by right-clicking on the folder and selecting Properties.

And: The dialog shows that there are 677 files in the folder. Further inspection shows all file paths are accurate.

Example output C:\Users\Sam\Documents\Perls\Category1.txt ... C:\Users\Sam\Documents\Perls\Style\all.css ... C:\Users\Sam\Documents\Perls\Main\2D-Array-IEnumerable.html ... 677
Summary. Here we saw a powerful and efficient recursive directory and subdirectory traversing function. It works reliably in programs. It is tested. The function provides accurate results.

Review: It demonstrates an excellent use of Stack and List. It is highly useful in many projects.

List
© TheDeveloperBlog.com
The Dev Codes

Related Links:


Related Links

Adjectives Ado Ai Android Angular Antonyms Apache Articles Asp Autocad Automata Aws Azure Basic Binary Bitcoin Blockchain C Cassandra Change Coa Computer Control Cpp Create Creating C-Sharp Cyber Daa Data Dbms Deletion Devops Difference Discrete Es6 Ethical Examples Features Firebase Flutter Fs Git Go Hbase History Hive Hiveql How Html Idioms Insertion Installing Ios Java Joomla Js Kafka Kali Laravel Logical Machine Matlab Matrix Mongodb Mysql One Opencv Oracle Ordering Os Pandas Php Pig Pl Postgresql Powershell Prepositions Program Python React Ruby Scala Selecting Selenium Sentence Seo Sharepoint Software Spellings Spotting Spring Sql Sqlite Sqoop Svn Swift Synonyms Talend Testng Types Uml Unity Vbnet Verbal Webdriver What Wpf