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 bestandC:/Documents and Settings/selfportrait.jpg
gelezen.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.