Dela via


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 filen C:/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.

Se även