读取空白文本文件时出错?

时间:2009-10-19 08:47:36

标签: vb6

使用VB6

当我读取空白文本文件时,将错误显示为输入过去文件末尾

代码。

Dim fso As FileSystemObject
Dim TS As TextStream
Dim TempS As String
Dim Final As String
Set fso = New FileSystemObject
Set TS = fso.OpenTextFile(txtSourceDatabaseFile & "\" & FileName, ForReading)
Final = TS.ReadAll
Do Until TS.AtEndOfStream
    TempS = TS.ReadLine
    Final = Final & TempS & vbCrLf
Loop
TS.Close

如何检查文本文件是否为空?如果为空则无需读取内容,否则应阅读内容。

需要VB6代码帮助

3 个答案:

答案 0 :(得分:8)

你这样做:

Final = TS.ReadAll
Do Until TS.AtEndOfStream
    TempS = TS.ReadLine
    Final = Final & TempS & vbCrLf
Loop

您应该在调用ReadAll之前检​​查AtEndOfStream,例如:

If TS.AtEndOfStream Then
   Final = ""
Else
    Final = TS.ReadAll
    Do Until TS.AtEndOfStream
        TempS = TS.ReadLine
        Final = Final & TempS & vbCrLf
    Loop
End If

但是请注意,那里有一个逻辑错误:ReadAll会将整个文件读入内存。因此,随后调用ReadLine将不会返回任何内容。使用ReadAll并使用字符串操作解析输入,或者仅调用ReadLine。不要同时使用它们。

答案 1 :(得分:2)

如果您只想在7月份将文本文件读成字符串,请参阅Stefan answered that on one of your questions。答案仍然是一样的。

strFilename = "C:\1.txt"
iFile = FreeFile
Open strFilename For Input As #iFile
strTheData = StrConv(InputB(LOF(iFile), iFile), vbUnicode)
Close #iFile

如果文件为空(零长度),则strTheData将包含空字符串“”。或者,您可以使用FileLen检查文件的长度。

If FileLen("C:\1.txt") = 0 Then MsgBox "Empty file"

我建议避免使用FileSystemObject:用户的计算机上有时会丢失它 - 可能是因为过度热心的IT部门害怕病毒?编辑:事实上,我刚刚从同事那里听说过上周用户问题,结果证明是FileSystemObject问题。

答案 2 :(得分:0)

如果您只想检查文件大小,可以直接询问.Size属性,而无需打开该文件:

set folder = fso.GetFolder(path)
for each file in folder.Files
  Response.Write file.Name & ": " & file.Size & "<br>"
Next