Практическое руководство. Чтение из двоичного файла в 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))
    
  • При работе с большими двоичными файлами можно использовать метод Read объекта FileStream, чтобы за раз считывать из файла только заданный объем данных. Затем можно ограничить объем файла, загружаемый в память во время каждой операции чтения. В следующем примере кода показано копирование файла, причем вызывающий объект задает, какая часть файла помещается в память при выполнении каждой операции чтения.

    ' 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).

  • Файл уже используется другим процессом или возникла ошибка ввода-вывода (IOException).

  • Длина пути превышает максимальную длину, определенную в системе (PathTooLongException).

  • Имя файла или каталога в пути содержит двоеточие (:) или имеет недопустимый формат (NotSupportedException).

  • Не хватает памяти для записи строки в буфер (OutOfMemoryException).

  • У пользователя отсутствуют необходимые разрешения на просмотр пути (SecurityException).

По имени файла не всегда можно с уверенностью судить о его содержимом. Например, файл с именем Form1.vb может вовсе не быть исходным файлом Visual Basic.

Следует проверять все входные данные перед использованием их в приложении. Содержимое файла может отличаться от ожидаемого, поэтому может не удаться прочесть файл с помощью методов чтения.

См. также