Text 为什么读取/写入另一个文件的VB6文本文件的最后一行仅部分打印?

Text 为什么读取/写入另一个文件的VB6文本文件的最后一行仅部分打印?,text,vb6,file,Text,Vb6,File,我正在使用VB6以编程方式创建几个文本文件夹,然后将它们连接到一个文件中 我使用 Print #lngFileHandle, Text 因此,即使在每个文件的最后一行文本之后,也应该有一个CR/LF 然后我将所有这些“子文件”一起附加到另一个以这种方式打开的文本文件中: Open strFileName For Append As #lngFileHandle 奇怪的是,我的最后一个结果文件看起来不错,只是最后一个附加文件的最后一行只是部分存在 在我阅读的文件中,最后几行是这样的:

我正在使用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>`  
IsEOF功能如下所示:

Public Function IsEOF() As Boolean
  If blnOpened Then
    IsEOF = EOF(lngFileHandle)
  Else
    IsEOF = True
  End If
End Function
如果我根本没有得到最后一行,但只得到其中的一部分,那对我来说就更有意义了?--我不明白

有人看到最后一行只会部分打印到最终文件的内容吗


TIA。

请确保您正在关闭文件,因为清除任何待写入的数据可能需要关闭文件。

VB6文件号不是文件句柄,因此不要这样称呼它们。它们是运行时文件描述符表中的索引,实际句柄、模式、缓冲区长度、缓冲区、端口等都存储在该表中

Close
语句不是同步的,而是一个“延迟关闭”语句,它可能没有刷新所有数据,并在您转身尝试再次读取文件时更新了文件的EOF指针。据我所知,这种行为是故意的,可能是出于性能原因

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

谢谢--确保在打印到连接的文件后立即关闭我的文件似乎已经成功了!
With mobjNewEntriesLog
  Do While Not .IsEOF
    strOutput = .ReadLine
    mobjMainLog.PrintLine strOutput
  Loop
End With
Public Function IsEOF() As Boolean
  If blnOpened Then
    IsEOF = EOF(lngFileHandle)
  Else
    IsEOF = True
  End If
End Function