VBScript AtEndOfStream Property
last modified April 9, 2025
The AtEndOfStream property in VBScript is part of the
TextStream object. It indicates whether the current position is at
the end of a text file. This property is read-only and returns a Boolean value.
It's essential for reading files line by line or character by character.
AtEndOfStream helps prevent errors when processing file contents.
It's commonly used in loops to read until the file ends. This tutorial covers
AtEndOfStream with practical examples to demonstrate its usage.
AtEndOfStream Property Overview
The AtEndOfStream property returns True if the file pointer is at
the end of the file. Otherwise, it returns False. It works with files opened
through the FileSystemObject in VBScript. The property is available
only for reading text files.
Key features include automatic detection of file end and simple Boolean return.
It doesn't modify the file or its contents. AtEndOfStream is
typically used with ReadLine or ReadAll methods.
Understanding this property helps create robust file reading scripts.
Basic File Reading with AtEndOfStream
This example demonstrates the simplest use of AtEndOfStream to read
a file line by line. It shows how to check for end-of-file condition. The script
reads until the entire file is processed.
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("C:\temp\data.txt", 1) ' 1 = ForReading
Do Until file.AtEndOfStream
line = file.ReadLine
WScript.Echo line
Loop
file.Close
Set file = Nothing
Set fso = Nothing
The script creates a FileSystemObject and opens a file for reading.
The loop continues until AtEndOfStream returns True. Each iteration
reads one line and displays it. Finally, resources are properly cleaned up.
Reading Entire File at Once
This example shows how to use AtEndOfStream with ReadAll.
It demonstrates checking the property before reading the entire file contents.
This approach is useful for small files.
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("C:\temp\note.txt", 1)
If Not file.AtEndOfStream Then
content = file.ReadAll
WScript.Echo content
End If
file.Close
Set file = Nothing
Set fso = Nothing
The script checks AtEndOfStream before reading. If the file isn't
empty, it reads all contents at once. This is efficient for small files but
should be avoided with large files. The property prevents unnecessary operations.
Character-by-Character Reading
This example demonstrates using AtEndOfStream to read a file one
character at a time. It shows precise control over file reading operations.
Each character is processed individually until the end.
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("C:\temp\chars.txt", 1)
Do Until file.AtEndOfStream
char = file.Read(1)
WScript.Echo "Character: " & char
Loop
file.Close
Set file = Nothing
Set fso = Nothing
The script reads exactly one character per iteration. AtEndOfStream
ensures the loop stops at the file's end. This approach is useful for parsing
or processing individual characters. It provides maximum control over reading.
Processing CSV Files
This example shows practical use of AtEndOfStream with CSV files.
It demonstrates reading and parsing comma-separated values. Each line is split
into components for further processing.
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("C:\temp\data.csv", 1)
Do Until file.AtEndOfStream
line = file.ReadLine
values = Split(line, ",")
WScript.Echo "Name: " & values(0) & ", Age: " & values(1)
Loop
file.Close
Set file = Nothing
Set fso = Nothing
The script reads each CSV line until the end. AtEndOfStream ensures
all lines are processed. Each line is split into an array of values. This
pattern is common for data processing scripts. The property makes the loop safe.
Counting Lines in a File
This example uses AtEndOfStream to count lines in a text file. It
demonstrates how to use the property for file analysis. The script maintains a
counter while reading through the file.
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("C:\temp\log.txt", 1)
lineCount = 0
Do Until file.AtEndOfStream
file.ReadLine
lineCount = lineCount + 1
Loop
WScript.Echo "Total lines: " & lineCount
file.Close
Set file = Nothing
Set fso = Nothing
The script increments a counter for each line read. AtEndOfStream
ensures all lines are counted. This approach is memory-efficient for large
files. The property provides the loop termination condition. The result shows
the total line count.
Source
FileSystemObject Documentation
In this article, we have explored the AtEndOfStream property in
VBScript, covering its usage and practical applications. From basic file reading
to complex data processing, these examples demonstrate reliable file handling.
With this knowledge, you can enhance your file processing scripts with robust
end-of-file detection.
Author
List all VBScript tutorials.