Поделиться через


Практическое руководство. Чтение из двоичных файлов в 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.

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

См. также