編程|進階 5.5.1 建立TextStream對象的方法
有三個常用方法用於建立或開啟一個文字檔並返回TextStram對象,如表5-13所示:
表5-13 建立TextStream對象的方法及說明
方 法
說 明
CreateTextFile
(filename,overwrite,unicode)
在磁碟上用指定的檔案名稱filename建立一個新文字檔,並返回一個與該檔案對應的TextStream對象。如果可選的overwrite參數設定為True,將覆蓋具有同樣路徑的同名檔案。預設的overwrite是False。如果可選的unicode參數設定為False,該檔案的內容將儲存為Unicode格式。預設的unicode是False
OpenTextFile
(filename,iomode,create,format)
開啟或建立(如果不存在)一個名為filename的檔案,並且返回與該檔案對應的TextStream對象。filename參數可以包含絕對或相對路徑。iomode參數說明需要的訪問類型。容許值是ForReading(1)(預設)、ForWriting(2)、ForAppending(8)。寫入或追加到一個不存在的檔案時,如果create參數設定為True,將建立一個新檔案。預設的create是False。format參數說明了讀或寫檔案時的資料格式。容許值是TristateFalse(0)(預設),說明用ASCII資料格式;TristateTrue(-1)說明用Unicode資料格式;TristateUseDefault(-2)說明資料使用系統預設的格式
OpenAsTextStream
(iomode,format)
開啟一個指定的檔案並且返回一個TextStream對象,可用於對該檔案的讀、寫或追加。iomode參數說明了需要的訪問類型。容許值是ForReading(1)(預設)、ForWriting(2)、ForAppending(8)。Format參數說明了讀寫檔案的資料格式。容許值是TristateFalse(0)(預設),說明用ASCII資料格式;TristateTrue(-1)說明用Unicode資料格式;TristateUseDefault(-2)說明使用系統預設的格式
上面列出的方法在FileSystemObject、Folder和File對象中的實現有所不同。如表5-14所示:
表5-14 三個對象中包含的方法
方 法
FileSystemObject對象
Folder對象
File對象
CreateTextFile
有
有
有
OpenTextFile
有
無
無
OpenAsTextStream
無
無
有
因此,可以使用這些方法建立一個新的文字檔,或者開啟一個已存在的檔案。則可得到與該檔案相應的一個TextStream對象,可以使用TextStream對象的屬性和方法操作檔案。
1. 建立新的文字檔
可以用CreateTextFile方法建立新的文字檔,或覆蓋一個已存在的檔案。返回的TextStream對象可用來讀寫檔案。
首先建立一個FileSystemObject對象,用來建立TextStream對象。下面這個例子是用VBScript建立一個“普通的”(即非Unicode)名為MyFile.txt的檔案,並覆蓋已存在的同名檔案:
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objTStream = objFSO.CreateTextFile("C:\TextFiles\MyFile.txt", True, False)
這同樣可用JScript實現:
var objFSO = Server.CreateObject('Scripting.FileSystemObject');
var objTStream = objFSO.CreateTextFile('C:\TextFiles\MyFile.txt', true, false);
一旦建立了該檔案,就可以使用objTStream(它是對一個TextStream對象的引用)對檔案進行操作。
2. 開啟已存在的文字檔
OpenTextFile方法用於開啟一個已有的文字檔。它返回一個TextStream對象,可用這個對象對檔案讀或追加資料。
同樣,首先建立一個FileSystemObject對象,然後用其建立一個TextStream對象。下面的VBScript程式例子開啟一個名為MyFile.txt的檔案,準備讀出其內容:
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objTStream = objFSO.OpenTextFile("C:\TextFiles\MyFile.txt", ForReading)
用JScript:
var objFSO = Server.CreateObject('Scripting.FileSystemObject');
var objTStream = objFSO.OpenTextFile('C:\TextFiles\MyFile.txt', ForReading);
為了寫入一個檔案或建立一個不存在的檔案,可以用以下代碼:
' In VBScript:
Set objTStream = objFSO.OpenTextFile("C:\TextFiles\MyFile.txt", ForWriting, True)
// In JScript:
var objTStream = objFSO.OpenTextFile('C:\TextFiles\MyFile.txt', ForWriting, true);
如果要開啟一個已有的Unicode檔案,準備對其追加資料,但是不建立不存在的檔案,可以用:
' In VBScript:
Set objTStream = objFSO.OpenTextFile("C:\TextFiles\MyFile.txt", ForReading, _
False, TristateTrue)
// In JScript:
var objTStream = objFSO.OpenTextFile('C:\TextFiles\MyFile.txt', ForReading, _
fasle, TristateTrue);
3. 作為一個TextStream對象開啟一個File對象
可用File對象的OpenAsTextStream方法開啟與該對象相應的檔案,並且返回一個能對該檔案進行讀、寫和追加的TextStream對象。所以,給定一個File對象(這種情況下不是FileSystemObject對象)——objFileObject,可作為一個“普通的”(非Unicode)TextStream對象開啟它,以供追加檔案內容:
' In VBScript:
Set objTStream = objFileObject.OpenAsTextStream(ForAppending, False)
// In JScript:
var objTStream = objFileObject.OpenTextFile(ForAppending, false);
注意,使用這種方法不需要檔案名稱,因為程式的執行通過引用File對象進行,並且沒有create參數,因為該檔案必須已存在,如果想從一個新的空的檔案開始,可以用:
' In VBScript:
Set objTStream = objFileObject.OpenAsTextStream(ForWriting)
// In JScript:
var objTStream = objFileObject.Op