将一个二进制文件读入到数组中

10

如何使用VB6最快地将整个大型二进制文件读入数组?

2个回答

14

以下是一种方法,不过您只能处理大小约为2 GB的文件。

  Dim fileNum As Integer
  Dim bytes() As Byte

  fileNum = FreeFile
  Open "C:\test.bin" For Binary As fileNum
  ReDim bytes(LOF(fileNum) - 1)
  Get fileNum, , bytes
  Close fileNum

1
为什么要循环?只需使用“Get fileNum,,bytes”即可将速度提高100倍。 - wqw
Get fileNum, , data 的地方,我遇到了一个 Run-time Error 458, Variable uses an Automation Type not supported in Visual Basic 错误。你知道这是怎么回事吗?我是不是缺少了某个库的引用? - user2173353
好的。明白了!将其更改为ReDim bytes(1 To lenF) As Byte。显然,我使用了Variant,但它完全不喜欢。。。 - user2173353

7
你可以比较这两个。
Private Function ReadFile1(sFile As String) As Byte()
    Dim nFile       As Integer

    nFile = FreeFile
    Open sFile For Input Access Read As #nFile
    If LOF(nFile) > 0 Then
        ReadFile1 = InputB(LOF(nFile), nFile)
    End If
    Close #nFile
End Function

Private Function ReadFile2(sFile As String) As Byte()
    Dim nFile       As Integer

    nFile = FreeFile
    Open sFile For Binary Access Read As #nFile
    If LOF(nFile) > 0 Then
        ReDim ReadFile2(0 To LOF(nFile) - 1)
        Get nFile, , ReadFile2
    End If
    Close #nFile
End Function

我更喜欢第二个,但它有一个讨厌的副作用。如果sFile不存在,For Binary模式会创建一个空文件,无论使用Access Read


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