When you think ASP, think...
Recent Articles
All Articles
ASP.NET Articles
Related Web Technologies
User Tips!
Coding Tips

Sample Chapters
JavaScript Tutorials
MSDN Communities Hub
Official Docs
Stump the SQL Guru!
XML Info
Author an Article

The 4 Guys Present: ASPFAQs.com

Jump to a FAQ
Enter FAQ #:
..or see our 10 Most Viewed FAQs.

4GuysFromRolla.com : ASP FAQS : FileSystemObject


How can I read the contents of a text file through an ASP page?

[Print this FAQ]

Answer: To read the contents of a text file, use the FileSystemObject.
In an earlier FAQ we discussed that the general purpose of the FileSystemObject (FSO) is to allow access to the host computer's file system. One common function when dealing with a computer's file system, is reading the contents of a file. FSO provides a TextStream object that is useful for reading and writing the contents of a text file. In this FAQ, we will discuss how to use
the TextStream object to read the contents of a file.

When using the TextStream object or other FSO objects, you need to first declare an instance of the FileSystemObject. For our script, let's start by creating an instance of the FileSystemObject:

'Create an instance of the FileSystemObject object
Dim objFSO
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

Before we open a file, we should always test to make sure it exists. The FileSystemObject provides a useful function to determine whether or not a file exists, aptly named FileExists. The syntax for FileExists is:


So, in this example, we want to output the contents of the text file D:\scott\resume.txt. Before we open our file, we will make sure that it exists.

Earlier I mentioned that the TextStream object is responsible for reading and writing to the contents of a text file. A TextStream object instance is used to iterate through the contents of a particular text file. So, before we can use a TextStream, we must inform the TextStream object instance what text file we are interested in. This is accomplished using the FileSystemObject's OpenTextFile method. The OpenTextFile method has the following syntax:

FileSystemObjectInstance.OpenTextFile(FullFilePath[, iomode])

Note: there are two more parameters, but we are only interested in these first two for the time being. If you are interested in the full specifications, read this.

The optional iomode parameter decides what IO mode the file is opened with. The following values can be used:

ForReading - 1
ForWriting - 2
ForAppending - 8

These constants are not defined in a text file like the ADO constants are defined in ADOVBS.inc, which you can learn more about at: ADOVBS.inc: Use It! Therefore, you should define the constant you wish to use. For example, if I use the ForReading constant, you
will see ASP code like:

Const fsoForReading = 1

The OpenTextFile method returns a TextStream object instance. So, to set a variable to a TextStream object instance for reading the contents of a particular file, you would use the following syntax:

'Assumes a FileSystemObject instance named objFSO exists
Const fsoForReading = 1
Dim objTextStream
Set objTextStream = objFSO.OpenTextFile("C:\SomeFile.txt", fsoForReading)

The TextStream object has the following important methods for reading text files:

Read(characters) - Reads a specified number of characters from the text file, returning a resulting string.
ReadLine - Reads an entire line up to, but not including, the new line character. The results are returned as a string.
ReadAll - Reads the entire contents of the file, returning the results as a string.

Finally, the TextStream object has a Close method, which should be used when you have finished reading from the file.

Now, let's look at how we could read the entire contents of a text file, D:\scott\resume.txt. We will use the FileExists method first, to make sure that the file does indeed exist. If it does, we'll output the contents of the file; if it doesn't, we'll display an appropriate message.

Dim objFSO
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

Dim objTextStream

const strFileName = "D:\scott\resume.txt"
const fsoForReading = 1

If objFSO.FileExists("D:\scott\resume.txt") then
   'The file exists, so open it and output its contents
   Set objTextStream = objFSO.OpenTextFile(strFileName, fsoForReading)
   Response.Write "<PRE>" & objTextStream.ReadAll & "</PRE>"
   Set objTextStream = Nothing
   'The file did not exist
   Response.Write strFileName & " was not found."
End If

'Clean up
Set objFSO = Nothing

Well, there you have it, reading the contents of a text file using the FileSystemObject and TextStream objects. A closing note: whenever you use objects, you should
always do Set Object = Nothing when you are done using them.

FAQ posted by Scott Mitchell at 9/25/2000 2:41:07 AM to the FileSystemObject category. This FAQ has been viewed 60,479 times.

Do you have a FAQ you'd like to suggest? Suggestions? Comments? If so, send it in! Also, if you'd like to be a FAQ Admin (creating/editing FAQs), let me know! If you are looking for other FAQs, be sure to check out the 4Guys FAQ and Commonly Asked Messageboard Questions!

Most Viewed FAQs:

1.) How can I format numbers and date/times using ASP.NET? For example, I want to format a number as a currency. (761643 views)
2.) I am using Access and getting a 80004005 error (or a [Microsoft][ODBC Microsoft Access Driver] The Microsoft Jet database engine cannot open the file '(unknown)' error) when trying to open a connection! How can I fix this problem? (207777 views)
3.) How can I convert a Recordset into an array? Also, how can I convert an array into a Recordset? (202549 views)
4.) How can I quickly sort a VBScript array? (196039 views)
5.) How can I find out if a record already exists in a database? If it doesn't, I want to add it. (156019 views)
6.) How do I display data on a web page using arrays instead of Do...While...MoveNext...???... (152331 views)
7.) When I get a list of all files in a directory via the FileSystemObject, they aren't ordered in any reasonable way. How can I sort the files by name? Or by size? Or by date created? Or... (140381 views)
8.) For session variables to work, must the Web visitor have cookies enabled? (110162 views)
9.) Can I send emails without using CDONTS? (107083 views)
10.) How can I take the result of a SELECT...MULTIPLE or a group of same-named checkboxes and turn it into a query? That is, if the user selects 3 answers, how can I construct a query that looks for all 3? (106308 views)
Last computed at 9/17/2007 3:22:00 AM

ASP.NET [1.x] [2.0] | ASPFAQs.com | Advertise | Feedback | Author an Article