5.2. Get File and Directory Information
In VB 2005, you can access all the file
and directory information you need from a single starting point: the
new My.Computer.FileSystem object.
Note: The new My.Computer. FileSystem object lets you get file
and directory information with a bare minimum of code.
5.2.1. How do I do that?
Here are four key methods of
My.Computer.FileSystem that you can use to get
file and directory information. Every method has the same
signatureit takes a single string parameter whose value is the
complete path of the file or directory that's the
subject of your query. The methods are:FileExists( )
Returns TRue if the file
exists.
DirectoryExists( )
Returns true
if the directory exists.
GetFileInfo( )
Returns a FileInfo
object. You can examine its various properties to get information
such as file size, attributes, and so on.
GetDirectoryInfo( )
Returns a
DirectoryInfo object. You can examine its various
properties to get information such as directory size, attributes, and
so on.
The code snippet shown in Example 5-2 first
determines whether a file exists and then displays some information
when it does.
Example 5-2. Retrieving information about a specific file
Imports System.IOHere's the type of output you'll
Module FileInfoTest
Public Sub Main( )
' Get a file in a "special directory."
Dim Info As FileInfo
Info = My.Computer.FileSystem.GetFileInfo("c:\Windows\explorer.exe")
' Show the access/update times.
Console.WriteLine("Created: " & Info.CreationTime)
Console.WriteLine("Last Modified: " & Info.LastWriteTime)
Console.WriteLine("Last Accessed: " & Info.LastAccessTime)
' Check if the file is read-only. When testing file attributes,
' you need to use bitwise arithmetic, because the FileAttributes
' collection usually contains more than one attribute at a time.
Dim ReadOnlyFile As Boolean
ReadOnlyFile = Info.Attributes And FileAttributes.ReadOnly
Console.WriteLine("Read-Only: " & ReadOnlyFile)
' Show the size.
Console.WriteLine("Size (bytes): " & Info.Length)
End Sub
End Module
see:
Created: 3/30/2004 7:35:17 PM
Last Modified: 8/29/2002 4:41:24 AM
Last Accessed: 4/28/2004 10:59:38 AM
Read-Only: False
Size (bytes): 104032
Version: 6.0.1106
5.2.2. What about...
...searching for directories and files?
The My.Computer.FileSystem object also provides a
GeTDirectories( ) method to retrieve the names of
all the subdirectories in a directory and a GetFiles() method to retrieve the names of all files in a given
directory.
Note: In early beta versions, Visual Basic included new
FolderProperties and FileProperties classes that duplicated the
DirectoryInfo and FileInfo classes. Fortunately, Microsoft decided
not to reinvent the wheel, and went back to the . NET 1.x
standards.
Both methods offer additional flexibility via an overloaded version
that accepts additional parameters. You can specify an array with one
or more filter strings (for example, use *.doc to
find all the files with the extension .doc). You
can also supply a Boolean includeSubFolders
parameter that, if TRue, searches for matching
files or directories in every contained subdirectory.Here's an example of an advanced search that finds
all the .exe files in the
c:\windows directory:
' Get all the EXE files in the Windows directory.Note that the GetFiles( ) and
For Each File As String In My.Computer.FileSystem.GetFiles( _
"c:\windows\", True, "*.exe")
Info = My.Computer.FileSystem.GetFileInfo(File)
Console.WriteLine(Info.Name & " in " & Info.Directory.Name)
Next
Getdirectories( ) methods just return strings. If
you want more information, you need to create a
FileInfo or DirectoryInfo
object for the file or directory, as shown above.There is one caveat: when you perform a search with the
GetFiles( ) method, the matching file list is
first created and then returned to your code. In
other words, if you're performing a time-consuming
search, you won't receive a single result until the
entire search is finished.