Dim fso As New FileSystemObject
Dim x As TextStream
Dim str As String
Set x = fso.CreateTextFile("G:\am.txt")
x.WriteLine ("abcdefg")
x.WriteLine ("hijklmn")
Do While x.AtEndOfLine = False
    str = x.Read(1)
    Debug.Print str
Loop
执行到do while语句时就会报错,54——文件模式错误。
到底怎么回事呀?难道写入后就不能读出了吗?请大家
帮帮忙。
谢谢!

解决方案 »

  1.   

    AtEndOfLine 属性仅应用于已打开供读取的 TextStream 文件;否则就会出错。
    正确写法:
    Private Sub Command1_Click()
        Dim fso As New FileSystemObject
        Dim x As TextStream
        Dim str As String
        Set x = fso.CreateTextFile("G:\am.txt")
        x.WriteLine ("abcdefg")
        x.WriteLine ("hijklmn")
        
        x.Close
        '重新打开
        Set x = fso.OpenTextFile("G:\am.txt", ForReading, False)
        
        Do While Not x.AtEndOfLine
            str = x.Read(1)
            Debug.Print str
        Loop
        
    End Sub
      

  2.   

    另外, AtEndOfLine将读取操作控制在一行之内,
    如果要读取所有行,则应该使用AtEndOfStream