为什么最后一行VB6文本文件被读/写到另一个文件仅部分打印?

时间:2011-03-31 13:17:51

标签: text vb6 file

我正在使用VB6以编程方式创建多个文本文件夹,然后将它们连接成一个文件。

我使用

将文字写入文件
Print #lngFileHandle, Text  

所以即使在每个文件的最后一行文本之后也应该有一个CR / LF。

然后我将所有这些“子文件”附加到另一个以这种方式打开的文本文件中:

Open strFileName For Append As #lngFileHandle

奇怪的是,我的最终结果文件看起来不错,除了最后一个文件的最后一行只是部分存在。

在我正在阅读的文件中,最后几行看起来像这样:

            `<Name>` Referral for Service Home Delivered Meals`</Name>`  
            `<Name>` Referral for Service Adult Day Care/Health`</Name>`  
            `<Name>` Referral for Service Congregate Meals`</Name>`  

但是从该文件读入并输出到最终文件后,它们看起来像这样:

            `<Name>` Referral for Service Home Delivered Meals`</Name>`
            `<Name>` Referral for Service Adult Day Care/Health`</Name>`
            `<Name>` Referral for Service Congr

我用来读取这个特定“子文件”并将其输出到最终文件的代码是:

With mobjNewEntriesLog
  Do While Not .IsEOF
    strOutput = .ReadLine
    mobjMainLog.PrintLine strOutput
  Loop
End With

.IsEOF功能如下:

Public Function IsEOF() As Boolean
  If blnOpened Then
    IsEOF = EOF(lngFileHandle)
  Else
    IsEOF = True
  End If
End Function

如果我没有得到最后一行,那么对我来说更有意义,但只获得它的一部分? - 我不明白。

有人看到任何会使最后一行仅部分打印到最终文件的内容吗?

TIA。

2 个答案:

答案 0 :(得分:2)

确保关闭文件,因为可能需要清除任何待处理的数据。

答案 1 :(得分:1)

VB6文件号不是文件句柄,所以不要调用它们。它们是运行时文件描述符表的索引,其中存储了实际的句柄,模式,缓冲区长度,缓冲区,ponters等。

Close语句不是同步的,而是“懒惰关闭”,可能没有刷新所有数据,并且在您转身并尝试再次读取时更新了文件的EOF指针。出于性能原因,这种行为是我可以确定的。

Reset语句可用于强制关闭所有打开的文件,并且它是同步的。这并不总是实用的,但在您的情况下可能没问题。很容易尝试:在重新打开任何文件之前添加重置以连接它们。