2010-03-16 6 views

답변

8

약 2GB 크기의 파일로 제한되어 있지만 여기에는 한 가지 방법이 있습니다.

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' 그리고 100x – wqw

+0

Get'Get fileNum, data'에서'Runtime Error 458, 변수는 Visual Basic에서 지원되지 않는 자동화 타입을 사용합니다. ' 무슨 일있어? 도서관 참고 자료가 누락 되었습니까? – user2173353

+0

확인. 알았다! 그것을 다음과 같이 변경하십시오 :'ReDim bytes (1 To lenF) By Byte'. 분명히 나는 ​​Variant를 사용하고 있었고 전혀 그것을 좋아하지 않았다. – user2173353

5

당신은 내가 두 번째 선호하는이 두

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과 상관없이 빈 파일을 만듭니다.