Postupy: Čtení z binárních souborů v jazyce Visual Basic
Objekt My.Computer.FileSystem
poskytuje metodu ReadAllBytes
pro čtení z binárních souborů.
Čtení z binárního souboru
Použijte metodu
ReadAllBytes
, která vrací obsah souboru jako pole bajtů. Tento příklad čte ze souboruC:/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))
U velkých binárních souborů můžete použít Read metodu objektu FileStream ke čtení ze souboru pouze zadanou částku najednou. Pak můžete omezit, kolik souboru se načte do paměti pro každou operaci čtení. Následující příklad kódu zkopíruje soubor a umožňuje volajícímu určit, kolik souboru je načteno do paměti pro každou operaci čtení.
' 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
Robustní programování
Následující podmínky mohou způsobit vyvolání výjimky:
Cesta není platná z jednoho z následujících důvodů: jedná se o řetězec nulové délky, obsahuje pouze prázdné znaky, obsahuje neplatné znaky nebo je to cesta zařízení (ArgumentException).
Cesta není platná, protože je
Nothing
(ArgumentNullException).Soubor neexistuje (FileNotFoundException).
Soubor se používá jiným procesem nebo dojde k vstupně-výstupní chybě (IOException).
Cesta překračuje maximální délku definovanou systémem (PathTooLongException).
Název souboru nebo adresáře v cestě obsahuje dvojtečku (:) nebo je v neplatném formátu (NotSupportedException).
Pro zápis řetězce do vyrovnávací pamětiOutOfMemoryException () není dostatek paměti.
Uživatel nemá potřebná oprávnění k zobrazení cesty (SecurityException).
Nečiňte rozhodnutí o obsahu souboru na základě jeho názvu. Soubor Form1.vb například nemusí být zdrojovým souborem jazyka Visual Basic.
Před použitím dat ve své aplikaci ověřte všechny vstupy. Soubor nemusí mít obsah, jaký očekáváte, a metody pro čtení z tohoto souboru mohou selhat.