Anvisningar: Läsa från binära filer i Visual Basic
Objektet My.Computer.FileSystem
tillhandahåller metoden ReadAllBytes
för att läsa från binära filer.
Läsa från en binär fil
ReadAllBytes
Använd metoden som returnerar innehållet i en fil som en bytematris. Det här exemplet läser från filenC:/Documents and Settings/selfportrait.jpg
.Dim bytes = My.Computer.FileSystem.ReadAllBytes( "C:/Documents and Settings/selfportrait.jpg") PictureBox1.Image = Image.FromStream(New IO.MemoryStream(bytes))
För stora binära filer kan du använda Read -metoden för FileStream objektet för att endast läsa från filen en angiven mängd åt gången. Du kan sedan begränsa hur mycket av filen som läses in i minnet för varje läsåtgärd. I följande kodexempel kopieras en fil och anroparen kan ange hur mycket av filen som läss in i minnet per läsåtgärd.
' 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
Robust programmering
Följande villkor kan orsaka att ett undantag utlöses:
Sökvägen är inte giltig av någon av följande orsaker: den är en sträng med noll längd, den innehåller endast tomt utrymme, innehåller ogiltiga tecken eller är en enhetssökväg (ArgumentException).
Sökvägen är inte giltig eftersom den är
Nothing
(ArgumentNullException).Filen finns inte (FileNotFoundException).
Filen används av en annan process, eller så uppstår ett I/O-fel (IOException).
Sökvägen överskrider den systemdefinierade maximala längden (PathTooLongException).
Ett fil- eller katalognamn i sökvägen innehåller ett kolon (:) eller är i ett ogiltigt format (NotSupportedException).
Det finns inte tillräckligt med minne för att skriva strängen för bufferten (OutOfMemoryException).
Användaren saknar nödvändiga behörigheter för att visa sökvägen (SecurityException).
Fatta inte beslut om innehållet i filen baserat på namnet på filen. Filen Form1.vb kanske till exempel inte är en Visual Basic-källfil.
Kontrollera alla indata innan du använder data i ditt program. Innehållet i filen kanske inte är vad som förväntas och metoderna för att läsa från filen kan misslyckas.