VBS脚本运行库手册(8)-打开和关闭文本文件

发布时间:2019-09-19编辑:脚本学堂
VBS脚本运行库手册,打开文件,关闭文件。

打开文本文件
文件的操作,首先打开文本文件。打开存在的文件或者创建一个新的文本文件,创建结束后,默认文件是打开的。每个方法都是返回一个 TextStream 对象实例。

在你获得了 TextStream 对象之后,你可以向这个文件中写或者读这个文件。但是你不能向同一个文件读和写。换句话说,在同一个操作中,你不能打开一个文件,读这个文件然后再向这个文件中写东西。你必须读完这个文件后关闭,然后再打开这个文件,写入数据,然后关闭。

当你打开一个存在的文件,这个文件要么是准备好被读的,要么是准备好被写的。如果你创建一个新的文本文件,这个文本文件只是被读的,没有什么其它原因的话,它没有内容去被读。最后,你要去关闭这个文本文件,虽然它不是必须的,因为在脚本结束的时候,它会自动关闭,但是这个对于程序实践来说是个好的办法为了打开一个文本文件:

1. 创建一个 FSO 对象实例。
2. 用:OpenTextFile 来打开一个文本文件。这个 OpenTextFile 需要两个参数,一个是一个文   件的路径,另外一个是跟着的参数:
    For reading (parameter value = 1, constant = ForReading).
    文件被打开之后只是被用来为读作准备的,为了写这个文件,你必须再一次的打开文件,用参数 ForWriting 或者 ForAppending。
    For writing (parameter value 2, constant = ForWriting).
    文件被打开,并且写入的数据覆盖了原来存在的数据,就是说旧的数据被删除,新的被添加。用这个方法用新的数据来代替存在的数据。
    For appending (parameter value 8, constant = ForAppending).
    文件在这种模式下打开,并且新的数据添加到文件的末尾。用这个方法向存在的文件中添加新的数据。

当打开文件的时候,你必须使用适当的参数。当你用读的模式打开一个文件而试图向里面写东西的时候,你会收到一个 bad file mode 的错误。你如果试图打开一个非文本文件的话也会收到同样的错误的。你可以直接用数值(比如 1 代表写)或者创建一个常量然后赋值给它适当的值。例如,如下的两种方法都可以打开一个文件并且准备被读:
Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:FSOScriptLog.txt", ForReading)
Set objFile2 = objFSO.OpenTextFile("C:FSOScriptLog2.txt", 1)

但是在没有定义这个常量的时候,不能直接用。因为VB脚本并没有这些 COM 对象常量。如下的脚本会返回一个 invalid procedure call or argument 的错误并且失败。这是因为ForReading 这个常量并没有显式的定义。因为它没有定义,所以这变量默认情况下被赋值为 0,而 0 对于 OpenTextFile 来说并不是一个合法的参数:
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:FSOScriptLog.txt", ForReading)

下面的脚本打开了 C:FSOScriptlog.txt 准备读,用了用户自己定义的变量,并且赋值为 1.
Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:FSOScriptLog.txt", ForReading)

关闭打开的文件
所有的用脚本打开的文本文件在脚本结束的时候会自动关闭。因此并不要求必须显式的关闭一个文本文件。
然而,关闭这个文本文件却是一个很好的程序实践并且在下面的一些情况下,如果不关闭文件的话,会产生一些错误。