如何:在 Visual Basic 中從二進位檔案讀取
My.Computer.FileSystem
物件提供用來讀取二進位檔案的 ReadAllBytes
方法。
讀取二進位檔案
使用
ReadAllBytes
方法,以將檔案內容傳回為位元組陣列。 此範例會從檔案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))
對於大型二進位檔案,您可以使用 FileStream 物件的 Read 方法,同時只讀取指定數量的檔案。 您接著可以限制每次讀取作業時將檔案的多少內容載入至記憶體。 下列程式碼範例會複製檔案,並可讓呼叫端指定在每次讀取作業時將檔案的多少內容讀入記憶體。
' 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
穩固程式設計
下列條件可能會造成擲回例外狀況:
因下列其中一項原因而導致路徑無效:它是長度為零的字串、它只包含空白字元、它包含無效的字元,或者它是裝置路徑 (ArgumentException)。
路徑無效,因為它是
Nothing
(ArgumentNullException)。檔案不存在 (FileNotFoundException)。
檔案正由另一個處理序使用中,或發生 I/O 錯誤 (IOException)。
路徑超過系統定義的最大長度 (PathTooLongException)。
路徑中的檔案或目錄名稱含有冒號 (:),或者是無效的格式 (NotSupportedException)。
沒有足夠的記憶體可將字串寫入緩衝區 (OutOfMemoryException)。
使用者缺乏必要的使用權限來檢視路徑 (SecurityException)。
請勿根據檔案名稱來判斷檔案內容。 例如,檔案 Form1.vb 可能不是 Visual Basic 來源檔案。
在應用程式中使用這些資料之前,請先驗證所有輸入值。 檔案內容可能與預期不同,並從檔案讀取資料的方法會失敗。