如何使用VB6从文本文件中读取数据?

8

我需要从文本文件中读取数据并在我的应用程序中使用。我正在使用VB 6.0。 我该使用哪些命令?非常感谢提供一些示例代码。

7个回答

19

以下是如何将整个文本文件读入字符串的方法 - 来自VB6手册

Function FileToString(strFilename As String) As String
  iFile = FreeFile
  Open strFilename For Input As #iFile
    FileToString = StrConv(InputB(LOF(iFile), iFile), vbUnicode)
  Close #iFile
End Function

我正在阅读一个解压后的PDF文件,并在InputB行上收到“文件结束前的输入”错误。 - Shodan
我按照@Shodan的建议将其转换为一个函数。 - MarkJ
@Shodan 那个“文件末尾输入”错误很奇怪。LOF 返回了什么?它应该是文件的字节长度。然后 InputB 期望传递要读取的字节数,因此很难看出它如何读取超过文件末尾的内容。 - MarkJ

14

完整的教程和示例代码可以在此处找到。

  Open Filename$ For Input As #FileHandle

  Do While Not EOF(FileHandle)        ' Loop until end of file
   Line Input #FileHandle, TextLine$  ' Read line into variable
    ' Your code here
  Loop

  Close #FileHandle

3

我来晚了,但是 Microsoft Scripting Runtime(scrrun.dll)中的 FileSystemObject 对象对此非常有用。

Public Function ReadTextFileAsString(IN_sFilePath As String) As String
    Dim myFSO As Scripting.FileSystemObject
    Dim myTextStream As Scripting.TextStream
    Dim myString As String

    'Create a new FileSystemObject
    Set myFSO = New Scripting.FileSystemObject

    'Make sure file exists:
    If myFSO.FileExists(IN_sFilePath) Then
        Set myTextStream = myFSO.OpenTextFile(IN_sFilePath, ForReading)
        myString = myTextStream.ReadAll()
        Call myTextStream.Close
    End If
    'Assign Return Value
    ReadTextFileAsString = myString

    'Make sure to clean up when done.
    Set myTextStream = Nothing
    Set myFSO = Nothing
End Function

还有其他方法可用于从文本流中获取数据。您可以按字符或逐行读取一定数量的数据。您需要在项目引用中添加 Microsoft Scripting Runtime,但它真的非常有用。


1
确保您的文件存在:
If myFSO.FileExists(IN_sFilePath) Then
    Set myTextStream = myFSO.OpenTextFile(IN_sFilePath, ForReading)
    myString = myTextStream.ReadAll()
    Call myTextStream.Close
End If
'Assign Return Value
ReadTextFileAsString = myString

1
如果文件中只有纯文本,那么您可以使用以下代码将整个文件读入一个字符串变量中:

Private Sub ReadFile(strFile As String)
  Dim intFile As Integer
  Dim strData As String
  intFile = FreeFile
  Open strFile For Input As #intFile
    strData = Input(LOF(intFile), #intFile)
  Close #intFile
End Sub

一个变长字符串最多可以包含约20亿(2^31)个字符。


0

这是相关代码

Function ReadFileToText(filePath)

   Dim objFile, objText, text

   Set objFile = CreateObject("Scripting.FileSystemObject")
   Set objText = objFile.OpenTextFile(filePath)

   text = objText.ReadAll
   objText.Close

   Set objText = Nothing
   Set objFile = Nothing

   ReadFileToText = text

End Function

-1

我会向你介绍一种不同的方法来读取并将内容导入到你的表单窗口中

public sub readfile
    Dim rtc As TextBox = New TextBox
    rtc.Multiline = True
    rtc.ScrollBars = ScrollBars.Both
    rtc.Width = 400
    rtc.Height = 200
    Me.Controls.Add(rtc)
    rtc.WordWrap = True
    Dim FILE_NAME As String = "C:\Users\vcidex92\Desktop\suji\me.html"

    If System.IO.File.Exists(FILE_NAME) = True Then

        Dim objReader As New System.IO.StreamReader(FILE_NAME)
        rtc.Text = objReader.ReadToEnd
        objReader.Close()
    Else

        MsgBox("File Does Not Exist")
    End If
end sub

这是VB.Net,问题标记为VB6。 - MarkJ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接