Jaki jest najszybszy sposób (przy użyciu VB6) do odczytu całego, dużego pliku binarnego do tablicy?Odczytaj plik binarny do tablicy
7
A
Odpowiedz
8
Oto jeden ze sposobów, choć ograniczasz się do plików o rozmiarze około 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
5
Można porównać te dwa
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
wolę drugi, ale ma ten przykry efekt uboczny. Jeśli sFile
nie istnieje, tryb For Binary
tworzy pusty plik niezależnie od tego, czy jest używany Access Read
.
Dlaczego pętla? Po prostu 'Get fileNum,, bytes' i przyspieszenie go 100x – wqw
W' Get fileNum, data' otrzymuję 'Run-time Error 458, Variable używa typu Automation nieobsługiwanego w Visual Basic'. Masz pojęcie, co się dzieje? Czy brakuje mi odniesienia do biblioteki? – user2173353
OK. Rozumiem! Zmień to na: 'ReDim bytes (1 To lenF) As Byte'. Najwyraźniej używałem Warianta i wcale mu się to nie podobało ... – user2173353