My.Computer.FileSystem Shortcuts for VB.NET - Part II
July 26th, 2007
This article is the second in my series on the My.Computer.FileSystem Namespace. This namespace provides several functions for working with files. In this article we’ll take a look at some more functions and rate their usefulness based on how well they compare with the related NET Framework functions and if they bring any expanded or well wrapped functionality.
DirectoryExists
First let’s take a look at DirectoryExists:
.
.
.
My.Computer.FileSystem.DirectoryExists(FolderToCheck)
This function simply returns if a target directory exists or not. It is exactly the same as this System.IO function:
System.IO.Directory.Exists(FolderToCheck)
Since this wrapper doesn’t bring anything new to the table, I’ll have to give it 2 out of 5.
FileExists
Our next function is also an exact duplicate of the related System.IO function
My.Computer.FileSystem.FileExists(FileToCheck)
System.IO.File.Exists(FileToCheck)
Just like DirectoryExists, it doesn’t add anything new so I’ll rate it 2 out of 5 also.
FindInFiles
Unlike our previous functions, our next one, FindInFiles, is quite useful. It searches a target folder and returns a read-only collection of strings that contains the matching files. Here’s an example of each overload:
Dim ListOfMatches As ObjectModel.ReadOnlyCollection(Of String) = _
My.Computer.FileSystem.FindInFiles(FolderToSearch, TextToSearch, _
True, FileIO.SearchOption.SearchTopLevelOnly)
Dim ListOfMatches As ObjectModel.ReadOnlyCollection(Of String) = _
My.Computer.FileSystem.FindInFiles(FolderToSearch, TextToSearch, _
True, FileIO.SearchOption.SearchTopLevelOnly, _
New String() {"s*.txt", "t*.txt"})
.
The search that this function wraps up is very powerful. Beyond just the directory, you also can specify the text to search for and to ignore the case of this text or not. Plus you can specify to search just the top level directory or the target directory and its sub-directories. The second overload also allows you to specify not only a single wildcard value but multiple wildcard values for a very powerful search.
Finally, the results come back in a type safe, read-only, string collection that’s very easy to work with. For example, if you wanted to load the list into a Listbox, you could do the following:
Dim FoundFiles(ListOfMatches.Count - 1) As String ListOfMatches.CopyTo(FoundFiles, 0) ListBox1.Items.AddRange(FoundFiles)
Since this function provides features above and beyond the related System.IO.Directory.GetFiles function with its ability to search the text of target files and wildcard support, I’ll have to give it a 5 out of 5 rating.
GetDirectories
GetDirectories is similar to FindInFiles in that it searches a folder for matching directories, can recurse into subfolders, and can perform wildcard searches. Here is an example of the each overload:
ListOfMatches = My.Computer.FileSystem.GetDirectories(FolderToSearch)
ListOfMatches = My.Computer.FileSystem.GetDirectories(FolderToSearch, _
FileIO.SearchOption.SearchAllSubDirectories, _
New String() {"a*", "b*", "c*"})
.
The System.IO.Directory.GetDirectories is very similar to this function but there is one key difference. The System.IO function doesn’t allow multiple wildcards like this function, only a single string. This can be quite helpful if you’re needing to search a large directory structure for several different directories. Other than this, it is largely redundant so using this function vs. the System.IO function is dependant on your particular needs.
Because this function has an added value to it in one of its overloads, I’ll give it a 4 out of 5.
I’ll be covering more functions from My.Computer.FileSystem soon. Please leave me a comment if your rating of these functions is different from mine.
Entry Filed under: VB.NET Tutorials
Rate This Article:










(3 votes, average: 3.33 out of 5)
1 Comment Add your own
1. irman | May 14th, 2009 at 12:38 am
how to open specific file from VB.Net Windows application (Windows Form)
Leave a Comment
Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Trackback this post | Subscribe to the comments via RSS Feed