Lesson 14: The File System Object
With the FileSystemObject you can access the server's filesystem. This allows you to manipulate drives, folders and text files in ASP scripts.
For example, you can use the {0}{1/}FileSystemObject{/0} to read or write a text file. Or you can list all files in a specified folder. There are many possibilities and the FileSystemObject can save you lots of tedious work.
Here, we'll look at how you can use the FileSystemObject to work with drives, folders and files. The goal is to give you a quick overview. In the next lessons, we will look more closely at the different possibilities with the FileSystemObject.
Drives
We start by looking at the computer's drives. Not because this is what you will be using the most, but because it's sensible to start with drives before digging into the topic of folders and files.
In the example below, we get all the drives on the server listed. This is done by the FileSystemObject, which creates an array with the drives. Each drive letter is then written as we run through the array.
<html> <head> <title>FileSystemObject</title> </head> <body> <% ' Variables Dim FSO, d, dc ' FileSystemObject Set fso = CreateObject("Scripting.FileSystemObject") ' Array of drives Set dc = fso.Drives ' Loop through the array and write the drive letter For Each d in dc Response.Write d.DriveLetter & "<br />" Next %> </body> </html>
Now we have listed all the drives on the server. It is also possible to retrieve additional information about each drive. For example, let's look closer at the E drive and examine what type of drive it is. For this, we use the property DriveType:
<html> <head> <title>FileSystemObject</title> </head> <body> <% ' Variables Dim fso, d, t ' FileSystemObject Set fso = CreateObject("Scripting.FileSystemObject") ' Object Drive Set d = fso.GetDrive("E:") ' Find drive type and set description Select Case d.DriveType Case 0: t = "Unknown" Case 1: t = "Removable" Case 2: t = "Fixed" Case 3: t = "Network" Case 4: t = "CD-ROM" Case 5: t = "RAM Disk" End Select Response.Write "Drive" & dDriveLetter & ": is a " & t & " drive" %> </body> </html>
At this time, we will not go into more depth with drives. See Drive Object in the VBScript documentation if you want more information on the different properties, etc.
Folders
The FileSystemObject also allows you to work with folders on the server. But before we begin to look at the Folder object, we need to be able to find the physical location of a folder or file.
The problem is that your website normally is hosted on a web-hosting server. Therefore, you probably don't know the physical location of a folder or a file. But help is near: You can use the method Server.Mappath to find the physical location of any file or folder.
For example, to find the physical location of the folder we are in right now, we write:
<% Response.Write Server.Mappath("/tutorials/asp/") %>
Which returns:
d:\www2\html\tutorials\asp
We now know that we are in the folder "www2" on drive d at the web server - a very nifty feature!
Let's now use this method together with the FileSystemObject and the FolderObject. We will not go through all the different possibilities - only a few selected. Again, see the documentation for a complete listing.
- DateCreated
- Returns the date and time when a file or folder was created.
- DateLastModified
- Returns the date and time when a file or folder was edited/modified.
- Size
- Returns the size of a file or a folder (including all files and subfolders) in bytes.
Let us try to find the three properties of the folder we are in now, which is http://www.html.net/tutorials/asp/.
<html> <head> <title>FileSystemObject</title> </head> <body> <% ' Variables Dim fso, f, folderspec ' Find the physical location of the folder folderspec = Server.Mappath ("/tutorials/asp/") ' FileSystemObject Set fso = CreateObject("Scripting.FileSystemObject") ' Folder object Set f = fso.GetFolder(folderspec) ' Find and write properties Response.Write "<h1>Folder: " & folderspec & "</h1>" Response.Write "<p>Was created: " & f.DateCreated & "</p>" Response.Write "<p>Last edited: " & f.DateLastModified & "</p>" Response.Write "<p>Size: " & f.Size & " bytes</p>" %> </body> </html>
Files
Just as with folders, you can use the FileSystem object to find the properties of a file.
In exactly the same way as above, we can find the same properties for the file you are looking at now: http://www.html.net/tutorials/asp/lesson14.asp.
<html> <head> <title>File System object</title> </head> <body> <% ' Variables Dim fso, f, filespec ' Find the physical location of the file filespec = Server.Mappath("/tutorials/asp/lesson4.asp") ' FileSystemObject Set fso = CreateObject("Scripting.FileSystemObject") ' File object Set f = fso.GetFiles(filespec) Find and write properties Response.Write "<h1>The file: " & filespec & "</h1>" Response.Write "<p>Was created: " & f.DateCreated & "</p>" Response.Write "<p>Last edited: " & f.DateLastModified & "</p>" Response.Write "<p>Size: " & f.Size & " bytes</p>" %> </body> </html>
In the next lesson, we will continue to look at the FileSystem object. Among other things, we will look at how to read from and write to a text file.