VBScript AtEndOfStream 属性
最后修改于 2025 年 4 月 9 日
VBScript 中的 AtEndOfStream 属性是 TextStream 对象的一部分。它指示当前位置是否已到达文本文件的末尾。此属性是只读的,并返回一个布尔值。它对于逐行或逐字符读取文件至关重要。
AtEndOfStream 有助于防止在处理文件内容时出现错误。它通常在循环中使用,直到文件结束。本教程通过实际示例介绍 AtEndOfStream 的用法。
AtEndOfStream 属性概述
如果文件指针位于文件末尾,AtEndOfStream 属性将返回 True。否则,它返回 False。它与通过 VBScript 中的 FileSystemObject 打开的文件一起工作。该属性仅可用于读取文本文件。
主要功能包括自动检测文件结束和简单的布尔返回值。它不会修改文件或其内容。AtEndOfStream 通常与 ReadLine 或 ReadAll 方法一起使用。理解此属性有助于创建健壮的文件读取脚本。
使用 AtEndOfStream 进行基本文件读取
此示例演示了 AtEndOfStream 最简单的逐行读取文件用法。它显示了如何检查文件结束条件。脚本一直读取直到整个文件被处理。
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。每次迭代读取一行并显示它。最后,资源得到妥善清理。
一次性读取整个文件
此示例展示了如何将 AtEndOfStream 与 ReadAll 一起使用。它演示了在读取整个文件内容之前检查该属性。这种方法对于小文件很有用。
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 逐个字符读取文件。它展示了对文件读取操作的精确控制。每个字符都会单独处理直到结束。
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 文件中的实际用法。它演示了读取和解析逗号分隔值。每一行都被分割成组件以供进一步处理。
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 来计算文本文件的行数。它演示了如何使用该属性进行文件分析。脚本在读取文件时维护一个计数器。
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 确保所有行都被计数。这种方法对于大文件来说是内存高效的。该属性提供了循环终止条件。结果显示总行数。
来源
在本文中,我们探讨了 VBScript 中的 AtEndOfStream 属性,涵盖了它的用法和实际应用。从基本的文件读取到复杂的数据处理,这些示例都展示了可靠的文件处理。有了这些知识,您就可以通过健壮的文件结束检测来增强文件处理脚本。