ZetCode

VBScript AtEndOfStream 属性

最后修改于 2025 年 4 月 9 日

VBScript 中的 AtEndOfStream 属性是 TextStream 对象的一部分。它指示当前位置是否已到达文本文件的末尾。此属性是只读的,并返回一个布尔值。它对于逐行或逐字符读取文件至关重要。

AtEndOfStream 有助于防止在处理文件内容时出现错误。它通常在循环中使用,直到文件结束。本教程通过实际示例介绍 AtEndOfStream 的用法。

AtEndOfStream 属性概述

如果文件指针位于文件末尾,AtEndOfStream 属性将返回 True。否则,它返回 False。它与通过 VBScript 中的 FileSystemObject 打开的文件一起工作。该属性仅可用于读取文本文件。

主要功能包括自动检测文件结束和简单的布尔返回值。它不会修改文件或其内容。AtEndOfStream 通常与 ReadLineReadAll 方法一起使用。理解此属性有助于创建健壮的文件读取脚本。

使用 AtEndOfStream 进行基本文件读取

此示例演示了 AtEndOfStream 最简单的逐行读取文件用法。它显示了如何检查文件结束条件。脚本一直读取直到整个文件被处理。

basic_read.vbs
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

脚本创建一个 FileSystemObject 并打开一个文件进行读取。循环一直持续到 AtEndOfStream 返回 True。每次迭代读取一行并显示它。最后,资源得到妥善清理。

一次性读取整个文件

此示例展示了如何将 AtEndOfStreamReadAll 一起使用。它演示了在读取整个文件内容之前检查该属性。这种方法对于小文件很有用。

read_all.vbs
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

脚本在读取之前检查 AtEndOfStream。如果文件不为空,它会一次性读取所有内容。这对于小文件来说是高效的,但不应与大文件一起使用。该属性可防止不必要的操作。

逐字符读取

此示例演示了使用 AtEndOfStream 逐个字符读取文件。它展示了对文件读取操作的精确控制。每个字符都会单独处理直到结束。

char_read.vbs
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

脚本在每次迭代中读取一个字符。AtEndOfStream 确保循环在文件末尾停止。这种方法对于解析或处理单个字符很有用。它提供了最大的读取控制。

处理 CSV 文件

此示例展示了 AtEndOfStream 在 CSV 文件中的实际用法。它演示了读取和解析逗号分隔值。每一行都被分割成组件以供进一步处理。

csv_reader.vbs
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

脚本读取每一行 CSV 直到末尾。AtEndOfStream 确保所有行都得到处理。每一行都被分割成一个值数组。这种模式对于数据处理脚本很常见。该属性使循环安全。

计算文件行数

此示例使用 AtEndOfStream 来计算文本文件的行数。它演示了如何使用该属性进行文件分析。脚本在读取文件时维护一个计数器。

line_counter.vbs
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

脚本为读取的每一行递增计数器。AtEndOfStream 确保所有行都被计数。这种方法对于大文件来说是内存高效的。该属性提供了循环终止条件。结果显示总行数。

来源

FileSystemObject 文档

在本文中,我们探讨了 VBScript 中的 AtEndOfStream 属性,涵盖了它的用法和实际应用。从基本的文件读取到复杂的数据处理,这些示例都展示了可靠的文件处理。有了这些知识,您就可以通过健壮的文件结束检测来增强文件处理脚本。

作者

我的名字是 Jan Bodnar,我是一名充满热情的程序员,拥有多年的编程经验。自 2007 年以来,我一直在撰写编程文章。到目前为止,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面有八年以上的经验。

列出所有 VBScript 教程