Delen via


Procedure: Lezen uit binaire bestanden in Visual Basic

Het My.Computer.FileSystem object biedt de methode voor het ReadAllBytes lezen van binaire bestanden.

Lezen uit een binair bestand

  • Gebruik de ReadAllBytes methode, die de inhoud van een bestand retourneert als een bytematrix. In dit voorbeeld wordt uit het bestand C:/Documents and Settings/selfportrait.jpggelezen.

    Dim bytes = My.Computer.FileSystem.ReadAllBytes(
                  "C:/Documents and Settings/selfportrait.jpg")
    PictureBox1.Image = Image.FromStream(New IO.MemoryStream(bytes))
    
  • Voor grote binaire bestanden kunt u de Read methode van het FileStream object gebruiken om slechts een opgegeven hoeveelheid tegelijk uit het bestand te lezen. U kunt vervolgens beperken hoeveel van het bestand in het geheugen wordt geladen voor elke leesbewerking. In het volgende codevoorbeeld wordt een bestand gekopieerd en kan de aanroeper opgeven hoeveel van het bestand per leesbewerking in het geheugen wordt gelezen.

    ' This method does not trap for exceptions. If an exception is 
    ' encountered opening the file to be copied or writing to the 
    ' destination location, then the exception will be thrown to 
    ' the requestor.
    Public Sub CopyBinaryFile(ByVal path As String,
                              ByVal copyPath As String,
                              ByVal bufferSize As Integer,
                              ByVal overwrite As Boolean)
    
        Dim inputFile = IO.File.Open(path, IO.FileMode.Open)
    
        If overwrite AndAlso My.Computer.FileSystem.FileExists(copyPath) Then
            My.Computer.FileSystem.DeleteFile(copyPath)
        End If
    
        ' Adjust array length for VB array declaration.
        Dim bytes = New Byte(bufferSize - 1) {}
    
        While inputFile.Read(bytes, 0, bufferSize) > 0
            My.Computer.FileSystem.WriteAllBytes(copyPath, bytes, True)
        End While
    
        inputFile.Close()
    End Sub
    

Robuuste programmering

De volgende voorwaarden kunnen ertoe leiden dat er een uitzondering wordt gegenereerd:

  • Het pad is om een van de volgende redenen ongeldig: het is een tekenreeks met lengte nul, bevat alleen witruimte, bevat ongeldige tekens of het is een apparaatpad (ArgumentException).

  • Het pad is ongeldig omdat het (ArgumentNullException) is Nothing .

  • Het bestand bestaat niet (FileNotFoundException).

  • Het bestand wordt gebruikt door een ander proces of er treedt een I/O-fout op (IOException).

  • Het pad overschrijdt de door het systeem gedefinieerde maximumlengte (PathTooLongException).

  • Een bestands- of mapnaam in het pad bevat een dubbele punt (:) of heeft een ongeldige indeling (NotSupportedException).

  • Er is onvoldoende geheugen om de tekenreeks naar buffer (OutOfMemoryException) te schrijven.

  • De gebruiker beschikt niet over de benodigde machtigingen om het pad (SecurityException) weer te geven.

Neem geen beslissingen over de inhoud van het bestand op basis van de naam van het bestand. Het bestand Form1.vb bijvoorbeeld geen Visual Basic-bronbestand is.

Controleer alle invoerwaarden voordat u de gegevens in uw toepassing gebruikt. De inhoud van het bestand is mogelijk niet wat er wordt verwacht en methoden om uit het bestand te lezen, kunnen mislukken.

Zie ook