如何使用VB6最快地将整个大型二进制文件读入数组?
以下是一种方法,不过您只能处理大小约为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
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
。
Get fileNum, , data
的地方,我遇到了一个Run-time Error 458, Variable uses an Automation Type not supported in Visual Basic
错误。你知道这是怎么回事吗?我是不是缺少了某个库的引用? - user2173353ReDim bytes(1 To lenF) As Byte
。显然,我使用了Variant,但它完全不喜欢。。。 - user2173353