VBS基础篇 - vbscript TextStream对象

所属分类: 脚本专栏 / vbs 阅读数: 1052
收藏 0 赞 0 分享

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 个换行符

Close、Write、WriteLine及WriteBlankLines的使用

方法名:Close()

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

方法名:WriteLine(string)

说明:向文件写入字符串 string(可选)和换行符。

示例:

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

Read、ReadAll及ReadLine的使用

方法名:Read(numchars)

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

方法名:ReadAll()

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

方法名:ReadLine()

说明:从 TextStream文件中读入一整行字符(直到下一行,但不包括下一行字符),并返回字符串

示例:

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

 Skip、SkipLine的使用

方法名:Skip(numchars)

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

方法名:SkipLine()

说明:当读到 TextStream文件时,跳过下一行。

示例:

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 开始返回文件中当前行的行号”

AtEndOfLine及AtEndOfStream的使用

两者间的区别是:

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

AtEndOfStream——读取到整个文本的末尾

示例:

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

Column及Line的使用

示例:

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  

文本读取示例:

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

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

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

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

读取文本指定行内容 

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

这篇文章就结束到这了,需要的朋友可以参考一下。

更多精彩内容其他人还在看

vbscript Split函数用法详解(字符串转数组函数)

本文详细介绍了vbscript中split函数的用法,有关split函数的一些实例,vbscript中split函数的语法介绍,有需要的朋友参考下
收藏 0 赞 0 分享

VBS实现将Excel表格保存为txt文本

希望能够找到个能给excel表另存为TXT的VBS代码,虽然另存为可以选择,但还是需要直接VBS执行这一步另存为TXT格式的,应该如何写代码呢
收藏 0 赞 0 分享

vbs解决处理TXT文本数据相关问题实现代码

使用vbs处理txt数据时,会遇到一些问题,本文将提供详细的解决方法,希望可以帮助你们
收藏 0 赞 0 分享

关于vbs 生成静态页面过程中出现的问题

访问某个aspx页面,然后把服务器返回的页面以filestream 的形式保存为html格式,接下来将介绍实现代码
收藏 0 赞 0 分享

dim函数第三个参数设置截取字符的长度问题

dim函数的第三个参数,也就是截取字符的长度,我在设置这个的时候,出了些问题,提示无效的过程调用或参数,本文详细介绍如何解决
收藏 0 赞 0 分享

邪恶的eval和new Function使用介绍

这些代码可以干什么?可以肯定的是可以干很多猥琐的事
收藏 0 赞 0 分享

WScript.Shell对象SpecialFolders属性未公开文档分享

WshShell对象的SpecialFolders属性返WshSpecialFolders 对象,该对象是一个特殊文件夹集合,其中包含整套Windows特殊文件夹
收藏 0 赞 0 分享

用VBS修改(设置)系统时间和日期的代码

用 VBS 把系统的时间修改到2038年1月19日3时14分07秒之后,这样某些依赖于 Unix 时间戳的程序就会出问题。那么怎样用 VBS 修改系统的时间呢
收藏 0 赞 0 分享

VBS For Next循环的一些细节

For Next 语句是 VBS 中常用的循环语句,你可能已经用过无数次 For Next 循环,但是你是否注意过它的一些细节呢
收藏 0 赞 0 分享

VBS For Next循环的陷阱分享

在《VBS For Next循环的一些细节》中说到了 For Next 循环的控制变量仅仅在循环开始前求值一次,但是其中存在一处陷阱
收藏 0 赞 0 分享
查看更多