我正在使用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。
答案 0 :(得分:2)
确保关闭文件,因为可能需要清除任何待处理的数据。
答案 1 :(得分:1)
VB6文件号不是文件句柄,所以不要调用它们。它们是运行时文件描述符表的索引,其中存储了实际的句柄,模式,缓冲区长度,缓冲区,ponters等。
Close
语句不是同步的,而是“懒惰关闭”,可能没有刷新所有数据,并且在您转身并尝试再次读取时更新了文件的EOF指针。出于性能原因,这种行为是我可以确定的。
Reset
语句可用于强制关闭所有打开的文件,并且它是同步的。这并不总是实用的,但在您的情况下可能没问题。很容易尝试:在重新打开任何文件之前添加重置以连接它们。