我在这里学编程 进阶篇 共28页[1 2 3 4 5 6 7 >»<.. 最后一页]

TextStream对象与文件读写

     TextStream对象与文件读写

    所有的文件都必须先打开才能读写,FileSystemObject对象所提供的打开文件的方法有两种:

    OpenTextFile:打开文件。
    CreateTextFile:建立新文件。

    通过FileSystemObject所打开的文件在Scripting模块的对象结构中是一个TextStraem对象。而通过TextStraem对象和各种方法和属性,我们可以进一步读写文件。

    OpenTextFile方法:打开文件
Set TextStraem 对象名=FileSystemObject名OpenTextFile(文件名,IO模式,是否自动建立文件)

    参数1、文件名称:建议传入望整路径的文件名称。

    参数2、IO模式:可设置成ForReading(=1)、ForWrting(=2)或ForAppending(=8)如果1则打开的文件是只读;如果2打开的文件是可写,而原来的文件的内容会被清除(长度变0);如果8则打开的文件是可写,但原文件的内容不会被清除,数据会最后面开始写入。此参数省略表示ForReading。

    参数3、是否自动建立文件:可设置成True或False。如果True则当文件不存在时会自动建立一个新文件;如果设置成False则当文件不存在时就会产生错误。这个参数省略表示为False

Dim fs As New FileSystemObject
Dim txtf As TextStream
Set txtf = fs.OpenTextFile("g:\cat1.txt")
 '将g:\cat1.txt打开成为只读
Set txtf = fs.OpenTextFile("g:\cat2.txt", ForAppending, True)
 '将g:\cat1.txt打开成为“从文件最后面写入的文件”
 '若文件不存在,则先建立文件
txtf.Close '关闭文件

    CreateTextFile:建立新文件
Set TextStraem 对象名=FileSystemObject名CreateTextFile(文件名,IO模式,是否自动建立文件)

    参数1、与OpenTextFile的“文件名称“文件名称”参数意义相同。

    参数2、是否要覆盖原文件:可设置成True或False。如果True则当文件存在时原文件会被破坏,而以新文件所代替;如果设置成False则当文件存在时就会产生错误。这个参数省略表示覆盖原文件。

Dim fs As New FileSystemObject
Dim txtf As TextStream
Set txtf = fs.CreateTextFile("g:\cat1.txt")
 '建立g:\cat1.txt,若g:\cat1.txt存在则覆盖之
Set txtf = fs.CreateTextFile("g:\cat2.txt", False)
 '建立g:\cat1.txt,若g:\cat1.txt存在则产生错误

 


为了避免错误,解决方法有两中,其一是:
On Error Resume Next '忽略错误继续向下执行
Set txtf = fs.CreateTextFile("g:\cat2.txt", False)
If Err = 58 Then '错误编号58表示“文件已经存在”
Print "文件已经存在" '在窗体上显示文件已经存在信息
End If

其二是:FileExists方法:文件是否存在?
If fs.FileExists("g:\c.txt") Then '文件已存在
   Print "文件已存在"
Else '文件不存在才建立新文件
   Set txtf = fs.CreateTextFile("g:\c.txt")
End If

    ReadLine和WriteLine方法:文件的读取与写入

    利用CreateTextFile和OpenTextFile所打开(建立)是的文本文件,要存取文本文件,通常采用逐行读取或逐行写入的方式,读取时必须调用TextStream对象的ReadLine方法,写入时必须调用WriteLine方法,具体使用方法如下所示:

    s = txtf.ReadLine '读取一行数据,并设置S变量
    txtf2.WriteLine s '将S的数据作为文件的一行数据写入

    AtEndOfStream属性:文件是否已到末尾?

    当读取位置已到达文件的末尾时,如果再调用ReadLine读取数据,将会产生62号错误。要避免这个错误,必须判断TextStream对象的AtEndOfStream属性,如果这个属性为True表示文件位置已达到文件末尾,使用方法如下:

If Not txtf.AtEndOfStream Then '如果还没到文件末尾
   s = txtf.ReadLine
   txtf2.WriteLine s
End If

    ReadAll方法:一次读取文件的所有内容

    ReadAll方法则是一次读取文件的所有内容。如果要读取某个文本文件的所有内容,并将它设置给TextBox,则所编写的子程序如下:

Sub ReadAllToTextBox(txtf As TextStream, tb As TextBox)
    If Not txtf.AtEndOfStream Then
       tb.Text = txtf.ReadAll
    End If
End Sub

    Read和Write方法:文件的读取和写入

    Read和ReadLine方法最大的区别在于Read则每次读取N个字符而不是一行:
    n=10
    S=txtf.Read(n)

    Write与WriteLine方法最大是不同之处在于WinteLine每次象文件写入数据时,都会再多写Chr(13)和Chr(10)(这2个字符表示换行),而Write单纯写入。

    下面程序的作用是将输入到文本框的内容存放到g:\y.txt中。
   Set txtf = fs.CreateTextFile("g:\y.txt")
    txtf.Write tb.Text
    txtf.Close  

 

我在这里学编程 进阶篇 共28页[1 2 3 4 5 6 7 >»<.. 最后一页]