ZetCode

VBScript OpenAsTextStream 方法

最后修改于 2025 年 4 月 9 日

VBScript 中的 OpenAsTextStream 方法是 FileSystemObject 的一部分。它打开指定文件并返回一个 TextStream 对象。这允许读取、写入或追加文件。该方法为不同的操作提供了灵活的文件访问模式。

OpenAsTextStream 通常用于文本文件操作。它支持三种访问模式:读取、写入和追加。本教程将通过实际示例涵盖 OpenAsTextStream,以演示其在各种场景中的用法。

OpenAsTextStream 方法概述

OpenAsTextStream 方法接受两个可选参数:IOMode 和 Format。IOMode 指定文件的访问方式(读取、写入或追加)。Format 定义文件的字符编码(ASCII 或 Unicode)。

主要功能包括顺序文件访问和文本操作功能。除非以写入模式打开,否则该方法要求文件存在。它返回一个用于文件操作的 TextStream 对象。理解此方法有助于创建健壮的文件处理脚本。

基本文件读取

此示例演示了使用 OpenAsTextStream 读取文件。它显示了如何以读取模式打开文件并显示其内容。脚本逐行读取整个文件并输出每一行。

basic_reading.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.GetFile("C:\temp\sample.txt")
Set ts = file.OpenAsTextStream(1) ' 1 = ForReading

Do Until ts.AtEndOfStream
    WScript.Echo ts.ReadLine
Loop

ts.Close
Set fso = Nothing

脚本创建一个 FileSystemObject 并获取对文件的引用。它以读取模式 (1) 打开文件并一直读取到文件末尾。使用 WScript.Echo 输出每一行。最后,它关闭 TextStream 并清理对象。

写入文件

此示例展示了如何使用 OpenAsTextStream 写入文件。它演示了以写入模式 (2) 打开文件并写入新内容。使用写入模式时,现有文件内容将被覆盖。

file_writing.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.GetFile("C:\temp\output.txt")
Set ts = file.OpenAsTextStream(2) ' 2 = ForWriting

ts.WriteLine "This is line 1"
ts.WriteLine "This is line 2"
ts.Write "This is line 3 without newline"

ts.Close
Set fso = Nothing

脚本以写入模式 (2) 打开文件并写入三行文本。WriteLine 方法在每个字符串后添加一个换行符,而 Write 则不添加。文件将包含写入的所有内容,替换任何以前的内容。

追加到文件

此示例演示了如何将内容追加到现有文件。它展示了如何以追加模式 (8) 打开文件并添加新内容。与写入模式不同,追加模式会保留现有文件内容。

file_appending.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.GetFile("C:\temp\log.txt")
Set ts = file.OpenAsTextStream(8) ' 8 = ForAppending

ts.WriteLine "New log entry: " & Now()

ts.Close
Set fso = Nothing

脚本以追加模式 (8) 打开日志文件,并添加一个包含当前日期和时间的新条目。每次脚本运行时,都会向文件添加一个新行。这对于日志文件或数据收集场景很有用。

使用 Unicode 编码读取

此示例展示了如何指定 Unicode 编码来打开文件。OpenAsTextStream 的第二个参数控制文本格式。使用 -1 表示 Unicode,使用 0 表示 ASCII(默认)。

unicode_reading.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.GetFile("C:\temp\unicode_file.txt")
Set ts = file.OpenAsTextStream(1, -1) ' 1 = ForReading, -1 = Unicode

content = ts.ReadAll
WScript.Echo content

ts.Close
Set fso = Nothing

脚本以 Unicode 格式读取模式打开一个 Unicode 文本文件。ReadAll 方法一次性读取整个文件内容。当处理包含非 ASCII 字符或特殊符号的文件时,此方法很有用。

合并读写操作

此示例通过合并读写操作演示了更复杂的文件操作。它展示了如何读取文件、处理其内容,然后将修改后的数据写回。脚本为输入和输出使用了不同的 TextStream 对象。

read_write_combined.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.GetFile("C:\temp\data.txt")

' Read original content
Set inputTS = file.OpenAsTextStream(1) ' 1 = ForReading
content = inputTS.ReadAll
inputTS.Close

' Process content
processedContent = UCase(content)

' Write processed content
Set outputTS = file.OpenAsTextStream(2) ' 2 = ForWriting
outputTS.Write processedContent
outputTS.Close

Set fso = Nothing

脚本首先读取整个文件内容,将其转换为大写,然后写回。请注意,这里使用了两个单独的 TextStream 对象进行读取和写入。这种模式在文件转换任务中很常见。

来源

FileSystemObject 文档

在本文中,我们探讨了 VBScript 中的 OpenAsTextStream 方法,涵盖了其用法和实际应用。从基本的文件读取到复杂的文件读写操作,这些示例展示了灵活的文件处理能力。有了这些知识,您就可以通过健壮的文件处理功能来增强您的脚本。

作者

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

列出所有 VBScript 教程