VBS基础篇 - 对象(7) - TextStream对象

简介: VBS基础篇 - 对象(7) - TextStream对象   TextStream对象是用于访问文本文件的对象,它是FileSystemObject一个独立的附属对象,但在使用TextStream对象时,我们仍要借助FileSystemObject 对象或其附属对象来创建一个 TextStream 对象并访问磁盘文件的内容。

VBS基础篇 - 对象(7) - TextStream对象

 

TextStream对象是用于访问文本文件的对象,它是FileSystemObject一个独立的附属对象,但在使用TextStream对象时,我们仍要借助FileSystemObject 对象或其附属对象来创建一个 TextStream 对象并访问磁盘文件的内容。可以通过FileSystemObject 对象的CreateTextFile()及OpenTextFile(),来获取TextStream的对象句柄。

下面我们来具体的看看TextStream 对象的方法及属性的使用

TextStream对象的方法

方法 说明
Close() 关闭一个打开的文件
Read(numchars) 从文件中读出 numchars 个字符
ReadAll() 作为单个字符串读出整个文件
ReadLine() 作为一个字符串从文件中读出一行(直到回车符和换行)
Skip(numchars) 当从文件读出时忽略 numchars 个字符
SkipLine() 当从文件读出时忽略下一行
Write(string) 向文件写入字符串 string
WriteLine(string) 向文件写入字符串 string(可选)和换行符
WriteBlankLines(n) 向文件写入 n 个换行符

 

 

  CloseWrite、WriteLine及WriteBlankLines的使用

方法名Close()

说明:关闭正在打开的文件

方法名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 !"
'调用函数
Call  CreateFile(strPath,strText)
 
Sub  CreateFile(strPath,strText)
     Dim  objFso,objStream
     '创建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
     '关闭TextStream对象
     objStream.Close
End  Sub

 

   ReadReadAll及ReadLine的使用

方法名Read(numchars)

说明:从 TextStream文件中读入指定数目的字符并返回结果字符串。

方法名ReadAll()

说明:读入全部 TextStream文件并返回结果字符串。

方法名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
     '创建FileSystemObject对象
     Set  objFso = CreateObject( "Scripting.FileSystemObject" )
     '使用FileSystemObject对象的CreateTextFile(),来返回一个TextStream对象句柄
     Set  objStream = objFso.CreateTextFile(strPath, True )
     '写入字符
     objStream.WriteLine(strText)
     '读取字符串分别是:读取整行、读取所有、读取指定数目的字符
     Msgbox (objStream.ReadLine)
     Set  objStream = objFso.OpenTextFile(strPath,1,true)
     Msgbox (objStream.ReadAll)
     Set  objStream = objFso.OpenTextFile(strPath,1,true)
     Msgbox (objStream.Read(9))
     '关闭TextStream对象
     objStream.Close
End  Sub

 

    SkipSkipLine的使用

方法名Skip(numchars)

说明:读取 TextStream文件时跳过指定数目的字符

方法名SkipLine()

说明:当读到 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"
'调用函数
Call  CreateFile(strPath)
 
Sub  CreateFile(strPath)
     Dim  objFso,objStream
     '创建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个字符;或者跳过当前行,读取下一行
     objStream.Skip(5)
     Msgbox objStream.ReadAll
     Set  objStream = objFso.OpenTextFile(strPath,1,true)
     '跳过第一行
     objStream.SkipLine
     Msgbox objStream.ReadAll
     '关闭TextStream对象
     objStream.Close
End  Sub

 

   TextStream对象的属性 

属性

说明

AtEndOfLine

如果文件位置指针在文件中一行的末尾则返回 True

AtEndOfStream

如果文件位置指针在文件的末尾则返回 True

Column

 1 开始返回文件中当前字符的列号

Line

 1 开始返回文件中当前行的行号

 

  AtEndOfLineAtEndOfStream的使用

两者间的区别是:

AtEndOfLine——读取到当前文本行的末尾;

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"
'调用函数
Call  CreateFile(strPath)
 
Sub  CreateFile(strPath)
     Dim  objFso,objStream,str
     '创建FileSystemObject对象
     Set  objFso = CreateObject ( "Scripting.FileSystemObject" )
     '以只读的方式打开文件,如果文件不存在则创建它
     Set  objStream = objFso.OpenTextFile(strPath,1,true)
     '如果当前的指针不在行末,则读取文本内容
     Do  While  objStream.AtEndOfLine <> true
         str = str + objStream.Read(1)
     Loop
     msgbox str
     str = ""
     Set  objStream = objFso.OpenTextFile(strPath,1,true)
     '如果当前的指针不在文本末端,则读取文本内容
     Do  While  objStream.AtEndOfStream <> true
         str = str + objStream.Read(1)
     Loop
     MsgBox  str
     '关闭TextStream对象
     objStream.Close
End  Sub

 

   ColumnLine的使用

示例

 

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)
     '如果当前的指针不在整个文档的末尾,读取文本的所有内容
     Do  While  objTStream.AtEndOfStream <> true
         objTStream.ReadAll
         str = str + "共有"  & objTStream.Line & "行数据,光标最后所在列号为:"  &objTStream.Column & vbCrLf
     Loop
     '打印信息
     MsgBox  str
End  Sub   

 

   文本读取示例:

  如何读取文本最后一行数据?  

1
2
3
4
5
6
7
8
9
10
11
12
13
Dim  Fso,MyFile
Dim  strLine
'创建FileSystemObject对象
Set  Fso = CreateObject( "Scripting.FileSystemObject" )
'以只读的方式打开文件
Set  MyFile = Fso.OpenTextFile( "C:\test.txt" ,1)
'直到到达文件尾
Do  Until  MyFile.AtEndOfStream
     '读取当前整行数据
     strLine = MyFile.ReadLine
Loop
MyFile.Close
MsgBox strLine

 

   如何读取文本最后一行数据(文件末尾有空行)?  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Dim  Fso,MyFile
Dim  strLine
'创建FileSystemObject对象
Set  Fso = CreateObject( "Scripting.FileSystemObject" )
'以只读的方式打开文件
Set  MyFile = Fso.OpenTextFile( "C:\test.txt" ,1)
Do  Until  MyFile.AtEndOfStream
     '读取当前整行字符串
     strNextLine = MyFile.ReadLine
     '判断读取的整行字符串是不是空白
     If  Len(strNextLine) > 0 Then
         '不是空白,则赋值
         strLine = strNextLine
     End  If
Loop
MyFile.Close
MsgBox strLine

 

  读取文本指定行内容 

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)
     '如果当前的指针不在整个文档的末尾,读取文本的整行内容
     Do  Until  MyFile.AtEndOfStream
         TestTextStream = MyFile.ReadLine
         IntLine = IntLine - 1
         '判断光标是否已达到指定行,达到则退出函数
         If  IntLine = 0 Then
             Exit  Function
         End  If
     Loop
End  Function

 

 

技术改变世界! --狂诗绝剑
目录
相关文章
|
7月前
|
Python
Python的全局变量作用于整个程序,生命周期与程序相同,而局部变量仅限函数内部使用,随函数执行结束而销毁。
【5月更文挑战第11天】Python的全局变量作用于整个程序,生命周期与程序相同,而局部变量仅限函数内部使用,随函数执行结束而销毁。在函数内部修改全局变量需用`global`关键字声明,否则会创建新局部变量。
160 2
通过反射创建对应的运行时类的对象
通过反射创建对应的运行时类的对象
36 0
|
C#
C# 调用外部exe,且带参数
C# 调用外部exe,且带参数
818 0
|
Java Linux Windows
JAVA对象,直接新建跟反射新建,有区别
JAVA对象,直接新建跟反射新建,有区别
115 0
VBS基础篇 - 对象(3) - FileSystemObject对象
VBS基础篇 - 对象(3) - FileSystemObject对象     文件系统是所有操作系统最重要的部分之一,脚本经常会需要对文件及文件夹进行访问和管理,在Vbs中对桌面和文件系统进行访问的顶级对象是FileSystemObject(FSO),这个对象特别复杂,是vbs进行文件操作的核心。
983 0
VBS基础篇 - 对象(5) - File对象
VBS基础篇 - 对象(5) - File对象   描述:提供对文件所有属性的访问,从FSO对象的GetFile方法获得。        使用File对象        要用File对象模型来编程必须先用FileSystemObject(FSO)对象的GetFile方法获取文件的句柄...
1138 0
VBS基础篇 - 对象(1) - Class对象
VBS基础篇 - 对象(1) - Class对象       相信对JAVA有一定了解的朋友一定对类这个名词不陌生,但是大家可能没有想过在VBS中使用Class类吧,其实Class类在自动化测试中是相当常用的,对于代码量增大时,类的结构化就充分体现出了它强大的优势,下面我们就来看一下类的组成部分以及一些用法。
1252 0
VBS基础篇 - 对象(6) - Folder对象
VBS基础篇 - 对象(6) - Folder对象   描述:提供对文件所有属性的访问,从FSO对象的GetFile方法获得 使用Folder对象 要用Folder对象模型来编程必须先用FSO对象的Getfolder方法获取文件的句柄   1、使用 CreateObject 方法来...
832 0
外部VBS的调用
一.QTP调用外部VBS的方法 加到QTP的Resource中 在QTP菜单中设置, 菜单FileàSettingsàResource,将要加载的VB脚本添加进来。   举例: 步骤1:在D盘下新建一个VBS文件,叫“ test.
1254 0