TextStream對象是用于訪問文本文件的對象,它是FileSystemObject一個獨立的附屬對象,但在使用TextStream對象時,我們?nèi)砸柚鶩ileSystemObject 對象或其附屬對象來創(chuàng)建一個 TextStream 對象并訪問磁盤文件的內(nèi)容。可以通過FileSystemObject 對象的CreateTextFile()及OpenTextFile(),來獲取TextStream的對象句柄。
下面我們來具體的看看TextStream 對象的方法及屬性的使用
TextStream對象的方法
方法 | 說明 |
Close() | 關(guān)閉一個打開的文件 |
Read(numchars) | 從文件中讀出 numchars 個字符 |
ReadAll() | 作為單個字符串讀出整個文件 |
ReadLine() | 作為一個字符串從文件中讀出一行(直到回車符和換行) |
Skip(numchars) | 當(dāng)從文件讀出時忽略 numchars 個字符 |
SkipLine() | 當(dāng)從文件讀出時忽略下一行 |
Write(string) | 向文件寫入字符串 string |
WriteLine(string) | 向文件寫入字符串 string(可選)和換行符 |
WriteBlankLines(n) | 向文件寫入 n 個換行符 |
Close、Write、WriteLine及WriteBlankLines的使用
方法名:Close()
說明:關(guān)閉正在打開的文件
方法名:WriteLine(string)
說明:向文件寫入字符串 string(可選)和換行符。
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
Dim strPath,strText strPath = "C:\testing.txt" strText = "This is Test !hello word !" '調(diào)用函數(shù) Call CreateFile(strPath,strText) Sub CreateFile(strPath,strText) Dim objFso,objStream '創(chuàng)建FileSystemObject對象 Set objFso = CreateObject( "Scripting.FileSystemObject" ) '使用CreateTextFile(),來返回一個TextStream對象句柄 Set objStream = objFso.CreateTextFile(strPath, True ) '三個Write的意思為:在文本中寫入字符、寫入帶換行符的字符、寫入3個換行符 objStream.Write(strText) objStream.WriteLine(strText) objStream. WriteBlankLines 3 '關(guān)閉TextStream對象 objStream.Close End Sub |
Read、ReadAll及ReadLine的使用
方法名:Read(numchars)
說明:從 TextStream文件中讀入指定數(shù)目的字符并返回結(jié)果字符串。
方法名:ReadAll()
說明:讀入全部 TextStream文件并返回結(jié)果字符串。
方法名:ReadLine()
說明:從 TextStream文件中讀入一整行字符(直到下一行,但不包括下一行字符),并返回字符串
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
Call CreateFile( "c:\test.txt" , "This is Test !" & vbCrLf & "hello word !" ) Sub CreateFile(strPath,strText) Dim objFso,objStream '創(chuàng)建FileSystemObject對象 Set objFso = CreateObject( "Scripting.FileSystemObject" ) '使用FileSystemObject對象的CreateTextFile(),來返回一個TextStream對象句柄 Set objStream = objFso.CreateTextFile(strPath, True ) '寫入字符 objStream.WriteLine(strText) '讀取字符串分別是:讀取整行、讀取所有、讀取指定數(shù)目的字符 Msgbox (objStream.ReadLine) Set objStream = objFso.OpenTextFile(strPath,1,true) Msgbox (objStream.ReadAll) Set objStream = objFso.OpenTextFile(strPath,1,true) Msgbox (objStream.Read(9)) '關(guān)閉TextStream對象 objStream.Close End Sub |
Skip、SkipLine的使用
方法名:Skip(numchars)
說明:讀取 TextStream文件時跳過指定數(shù)目的字符
方法名:SkipLine()
說明:當(dāng)讀到 TextStream文件時,跳過下一行。
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
Dim strPath,strText strPath = "C:\test.txt" '調(diào)用函數(shù) Call CreateFile(strPath) Sub CreateFile(strPath) Dim objFso,objStream '創(chuàng)建FileSystemObject對象 Set objFso = CreateObject ( "Scripting.FileSystemObject" ) '使用FileSystemObject對象的CreateTextFile(),來返回一個TextStream對象句柄 Set objStream = objFso.CreateTextFile(strPath, True ) '在文本中寫入字符 objStream.Write "This is Test !" & vbCrLf & "hello word !" '以只讀的方式打開文件 Set objStream = objFso.OpenTextFile(strPath,1,true) '讀取文件時跳過5個字符;或者跳過當(dāng)前行,讀取下一行 objStream.Skip(5) Msgbox objStream.ReadAll Set objStream = objFso.OpenTextFile(strPath,1,true) '跳過第一行 objStream.SkipLine Msgbox objStream.ReadAll '關(guān)閉TextStream對象 objStream.Close End Sub |
TextStream對象的屬性
屬性 |
說明 |
AtEndOfLine |
如果文件位置指針在文件中一行的末尾則返回 True |
AtEndOfStream |
如果文件位置指針在文件的末尾則返回 True |
Column |
從 1 開始返回文件中當(dāng)前字符的列號 |
Line |
從 1 開始返回文件中當(dāng)前行的行號” |
AtEndOfLine及AtEndOfStream的使用
兩者間的區(qū)別是:
AtEndOfLine——讀取到當(dāng)前文本行的末尾;
AtEndOfStream——讀取到整個文本的末尾
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
Dim strPath,strText strPath = "C:\test.txt" '調(diào)用函數(shù) Call CreateFile(strPath) Sub CreateFile(strPath) Dim objFso,objStream,str '創(chuàng)建FileSystemObject對象 Set objFso = CreateObject ( "Scripting.FileSystemObject" ) '以只讀的方式打開文件,如果文件不存在則創(chuàng)建它 Set objStream = objFso.OpenTextFile(strPath,1,true) '如果當(dāng)前的指針不在行末,則讀取文本內(nèi)容 Do While objStream.AtEndOfLine <> true str = str + objStream.Read(1) Loop msgbox str str = "" Set objStream = objFso.OpenTextFile(strPath,1,true) '如果當(dāng)前的指針不在文本末端,則讀取文本內(nèi)容 Do While objStream.AtEndOfStream <> true str = str + objStream.Read(1) Loop MsgBox str '關(guān)閉TextStream對象 objStream.Close End Sub |
Column及Line的使用
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
Call TestTextStream( "c:\test.txt" ) Sub TestTextStream(strPath) Dim objFso,objTStream,str Set objFso = CreateObject( "Scripting.FileSystemObject" ) '以只讀的方式打開文件 Set objTStream = objFso.OpenTextFile(strPath,1) '如果當(dāng)前的指針不在整個文檔的末尾,讀取文本的所有內(nèi)容 Do While objTStream.AtEndOfStream <> true objTStream.ReadAll str = str + "共有" & objTStream.Line & "行數(shù)據(jù),光標(biāo)最后所在列號為:" &objTStream.Column & vbCrLf Loop '打印信息 MsgBox str End Sub |
文本讀取示例:
如何讀取文本最后一行數(shù)據(jù)?
1
2
3
4
5
6
7
8
9
10
11
12
13
|
Dim Fso,MyFile Dim strLine '創(chuàng)建FileSystemObject對象 Set Fso = CreateObject( "Scripting.FileSystemObject" ) '以只讀的方式打開文件 Set MyFile = Fso.OpenTextFile( "C:\test.txt" ,1) '直到到達文件尾 Do Until MyFile.AtEndOfStream '讀取當(dāng)前整行數(shù)據(jù) strLine = MyFile.ReadLine Loop MyFile.Close MsgBox strLine |
如何讀取文本最后一行數(shù)據(jù)(文件末尾有空行)?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
Dim Fso,MyFile Dim strLine '創(chuàng)建FileSystemObject對象 Set Fso = CreateObject( "Scripting.FileSystemObject" ) '以只讀的方式打開文件 Set MyFile = Fso.OpenTextFile( "C:\test.txt" ,1) Do Until MyFile.AtEndOfStream '讀取當(dāng)前整行字符串 strNextLine = MyFile.ReadLine '判斷讀取的整行字符串是不是空白 If Len(strNextLine) > 0 Then '不是空白,則賦值 strLine = strNextLine End If Loop MyFile.Close MsgBox strLine |
讀取文本指定行內(nèi)容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
MsgBox TestTextStream( "c:\test.txt" ,1) Function TestTextStream(strPath,IntLine) Dim Fso,MyFile Set Fso = CreateObject( "Scripting.FileSystemObject" ) '以只讀的方式打開文件 Set MyFile = Fso.OpenTextFile(strPath,1) '如果當(dāng)前的指針不在整個文檔的末尾,讀取文本的整行內(nèi)容 Do Until MyFile.AtEndOfStream TestTextStream = MyFile.ReadLine IntLine = IntLine - 1 '判斷光標(biāo)是否已達到指定行,達到則退出函數(shù) If IntLine = 0 Then Exit Function End If Loop End Function |
這篇文章就結(jié)束到這了,需要的朋友可以參考一下。