Here is how to use C# to scan through files recursively in a computer and add them to a TreeView control. The result will be a C# treeview with folders and files. There are two main functions to accomplish the task. One for scanning directions. The other for creating nodes and child nodes in the TreeView. Both are easily done with recursive C# functions...
To review, a recursive function is one that calls itself. When scanning directories for a list of files, recursion is useful so the function can scan all files and subdirectories. Subdirectories might have more subdirectories etc.
To list subdirectories in the TreeView, we want to be able to supply a path string such as “C:\Folder1\Folder2\file1.txt” and have the TreeView create nodes and children nodes to match the path. Recursion is then an easy way to add a path to a TreeView control.
To scan folders the C# function first needs the root directory. The C# Directory class the two functions we need: GetDirectories and GetFiles.
Directory.GetDirectories(“C:\\”) //returns an array of paths Directory.GetFiles(“C:\\”) //returns an array of file paths
The recursive call comes in when the C# function calls itself for each directory in the GetDirectories list.
scanFiles(directories[i]); //For Example
The TreeView control does not handle path strings by default. Here is the layout of the function:
The way the function works is that it will keep calling itself with the previous node as reference. The C# function stops when it runs out of backlashes, or parent nodes, to make.
If you open of Windows Explorer the file tree comes up in seconds. Why is it then that this tree takes so long to fill?
Windows uses indices and tables to have the file structure ready to go. The way our C# program is doing it is by manually scanning the hard drive and storing the structure of every single file. The downside, it takes very long. The upside, once it is loaded retrieving any part of it is very fast...