1、TextStream对象
- TextStream对象是用于访问文本文件的对象,它是FileSystemObject一个独立的附属对象,但在使用TextStream对象时,我们仍要借助FileSystemObject 对象或其附属对象来创建一个 TextStream 对象并访问磁盘文件的内容。
- 可以通过FileSystemObject 对象的CreateTextFile()及OpenTextFile(),来获取TextStream的对象句柄。
2、TextStream对象的方法
2.1、Close()
关闭一个打开的文件
2.2、Read(numchars)
从文件中读出 numchars 个字符
2.3、ReadAll()
作为单个字符串读出整个文件
2.4、ReadLine()
作为一个字符串从文件中读出一行(直到回车符和换行)
2.5、Skip(numchars)
当从文件读出时忽略 numchars 个字符
2.6、SkipLine()
当从文件读出时忽略下一行
2.7、Write(string)
向文件写入字符串 string
2.8、WriteLine(string)
向文件写入字符串 string(可选)和换行符
2.9、WriteBlankLines(n)
向文件写入 n 个换行符
2.10、 Skip
读取 TextStream文件时跳过指定数目的字符
objStream.Skip(5) '读取文件时跳过5个字符;或者跳过当前行,读取下一行
2.11、SkipLine
读到 TextStream文件时,跳过下一行。
objStream.SkipLine '跳过第一行
2.12、TextStream对象的属性
属性 | 说明 |
---|---|
AtEndOfLine | 如果文件位置指针在文件中一行的末尾则返回 True |
AtEndOfStream | 如果文件位置指针在文件的末尾则返回 True |
Column | 从 1 开始返回文件中当前字符的列号 |
Line | 从 1 开始返回文件中当前行的行号” |
msgbox “当前光标所在行:” & objTStream.Column & vbCrLf
2.13、AtEndOfLine及AtEndOfStream
AtEndOfLine——读取到当前文本行的末尾
AtEndOfStream——读取到整个文本的末尾
'如果当前的指针不在行末,则读取文本内容
Do While objStream.AtEndOfLine <> true
str = objStream.Read(1)
Loop
'如果当前的指针不在文本末端,则读取文本内容
Do While objStream.AtEndOfStream <> true
str = str + objStream.Read(1)
Loop
3、读写文件举例
3.1、写
Option Explicit
Dim objFso
Dim objStream
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objStream=objFso.CreateTextFile(".\test.txt")
objStream.Write("123") ‘写入123不换行
objStream.WriteLine("456") ‘写入456并换行
objStream.WriteBlankLines 3 ‘写入3个换行
objStream.WriteLine("789")
objStream.Close
3.2、读
Option Explicit
Dim objFso
Dim objStream
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objStream=objFso.OpenTextFile(".\test.txt",1,true,true)
msgbox objStream.ReadLine
'Msgbox (objStream.ReadAll)
'Msgbox (objStream.Read(9))
objStream.Close
3.2、读最后一行
'直到到达文件尾
Do Until objStream.AtEndOfStream
'读取当前整行数据
strLine = objStream.ReadLine
Loop
3.3、读取最后一行不为空的内容
Do Until objStream.AtEndOfStream
'读取当前整行字符串
strNextLine = objStream.ReadLine
'判断读取的整行字符串是不是空白
If Len(strNextLine) > 0 Then
'不是空白,则赋值
str = strNextLine
End If
Loop
msgbox str
3.4、读取文本指定行内容
Dim objFso,objStream
Dim IntLine
IntLine=2'第三行
Set objFso=CreateObject("Scripting.FileSystemObject")
'以只读的方式打开文件
Set objStream=objFso.OpenTextFile(".\test.txt",1)
Do until objStream.AtEndOfStream
if objStream.Line=IntLine then
msgbox objStream.ReadLine
exit do
end if
objStream.SkipLine
Loop