BinaryReader Класс

Определение

Считывает примитивные типы данных в виде двоичных значений в определенной кодировке.

public ref class BinaryReader : IDisposable
public class BinaryReader : IDisposable
[System.Runtime.InteropServices.ComVisible(true)]
public class BinaryReader : IDisposable
type BinaryReader = class
    interface IDisposable
[<System.Runtime.InteropServices.ComVisible(true)>]
type BinaryReader = class
    interface IDisposable
Public Class BinaryReader
Implements IDisposable
Наследование
BinaryReader
Атрибуты
Реализации

Примеры

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

using System;
using System.IO;
using System.Text;

class ConsoleApplication
{
    const string fileName = "AppSettings.dat";

    static void Main()
    {
        WriteDefaultValues();
        DisplayValues();
    }

    public static void WriteDefaultValues()
    {
        using (var stream = File.Open(fileName, FileMode.Create))
        {
            using (var writer = new BinaryWriter(stream, Encoding.UTF8, false))
            {
                writer.Write(1.250F);
                writer.Write(@"c:\Temp");
                writer.Write(10);
                writer.Write(true);
            }
        }
    }

    public static void DisplayValues()
    {
        float aspectRatio;
        string tempDirectory;
        int autoSaveTime;
        bool showStatusBar;

        if (File.Exists(fileName))
        {
            using (var stream = File.Open(fileName, FileMode.Open))
            {
                using (var reader = new BinaryReader(stream, Encoding.UTF8, false))
                {
                    aspectRatio = reader.ReadSingle();
                    tempDirectory = reader.ReadString();
                    autoSaveTime = reader.ReadInt32();
                    showStatusBar = reader.ReadBoolean();
                }
            }

            Console.WriteLine("Aspect ratio set to: " + aspectRatio);
            Console.WriteLine("Temp directory is: " + tempDirectory);
            Console.WriteLine("Auto save time set to: " + autoSaveTime);
            Console.WriteLine("Show status bar: " + showStatusBar);
        }
    }
}
open System.IO
open System.Text

let fileName = "AppSettings.dat"

let writeDefaultValues () =
    use stream = File.Open(fileName, FileMode.Create)
    use writer = new BinaryWriter(stream, Encoding.UTF8, false)
    writer.Write 1.250F
    writer.Write @"c:\Temp"
    writer.Write 10
    writer.Write true

let displayValues () =
    if File.Exists fileName then
        use stream = File.Open(fileName, FileMode.Open)
        use reader = new BinaryReader(stream, Encoding.UTF8, false)
        let aspectRatio = reader.ReadSingle()
        let tempDirectory = reader.ReadString()
        let autoSaveTime = reader.ReadInt32()
        let showStatusBar = reader.ReadBoolean()

        printfn $"Aspect ratio set to: {aspectRatio}"
        printfn $"Temp directory is: {tempDirectory}"
        printfn $"Auto save time set to: {autoSaveTime}"
        printfn $"Show status bar: {showStatusBar}"

writeDefaultValues ()
displayValues ()
Imports System.IO

Module Module1
    Const fileName As String = "AppSettings.dat"

    Sub Main()
        WriteDefaultValues()
        DisplayValues()
    End Sub

    Sub WriteDefaultValues()
        Using writer As BinaryWriter = New BinaryWriter(File.Open(fileName, FileMode.Create))
            writer.Write(1.25F)
            writer.Write("c:\Temp")
            writer.Write(10)
            writer.Write(True)
        End Using
    End Sub

    Sub DisplayValues()
        Dim aspectRatio As Single
        Dim tempDirectory As String
        Dim autoSaveTime As Integer
        Dim showStatusBar As Boolean

        If (File.Exists(fileName)) Then

            Using reader As BinaryReader = New BinaryReader(File.Open(fileName, FileMode.Open))
                aspectRatio = reader.ReadSingle()
                tempDirectory = reader.ReadString()
                autoSaveTime = reader.ReadInt32()
                showStatusBar = reader.ReadBoolean()
            End Using

            Console.WriteLine("Aspect ratio set to: " & aspectRatio)
            Console.WriteLine("Temp directory is: " & tempDirectory)
            Console.WriteLine("Auto save time set to: " & autoSaveTime)
            Console.WriteLine("Show status bar: " & showStatusBar)
        End If
    End Sub

End Module

Комментарии

Класс BinaryReader предоставляет методы, упрощающие чтение примитивных типов данных из потока. Например, можно использовать ReadBoolean метод для чтения следующего байта в виде логического значения и продвижения текущей позиции в потоке по одному байту. Класс включает методы чтения, поддерживающие различные типы данных.

При создании нового экземпляра BinaryReader класса необходимо предоставить поток для чтения, а также указать тип кодирования и указать, следует ли оставить поток открытым после удаления BinaryReader объекта. Если не указать тип кодирования, используется UTF-8.

Important

Этот тип реализует IDisposable интерфейс. Завершив использование типа, следует избавиться от него напрямую или косвенно. Чтобы удалить тип напрямую, вызовите его Dispose метод в блоке try/catch . Чтобы удалить его косвенно, используйте конструкцию языка, например using (в C#) или Using (в Visual Basic). Дополнительные сведения см. в разделе "Использование объекта, реализующего IDisposable" в IDisposable разделе интерфейса.

Конструкторы

Имя Описание
BinaryReader(Stream, Encoding, Boolean)

Инициализирует новый экземпляр класса на основе указанного BinaryReader потока и кодировки символов, а также при необходимости оставляет поток открытым.

BinaryReader(Stream, Encoding)

Инициализирует новый экземпляр класса на основе указанного BinaryReader потока и кодировки символов.

BinaryReader(Stream)

Инициализирует новый экземпляр класса на основе указанного BinaryReader потока и с помощью кодировки UTF-8.

Свойства

Имя Описание
BaseStream

Предоставляет доступ к базовому потоку объекта BinaryReader.

Методы

Имя Описание
Close()

Закрывает текущее средство чтения и базовый поток.

Dispose()

Освобождает все ресурсы, используемые текущим экземпляром класса BinaryReader.

Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые классом BinaryReader , и при необходимости освобождает управляемые ресурсы.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
FillBuffer(Int32)

Заполняет внутренний буфер указанным числом байтов, считываемым из потока.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
PeekChar()

Возвращает следующий доступный символ и не перемещает позицию байтов или символов.

Read()

Считывает символы из базового потока и перемещает текущую позицию потока в соответствии с Encoding используемым и определенным символом, считываемым из потока.

Read(Byte[], Int32, Int32)

Считывает указанное число байтов из потока, начиная с указанной точки в массиве байтов.

Read(Char[], Int32, Int32)

Считывает указанное количество символов из потока, начиная с указанной точки в массиве символов.

Read(Span<Byte>)

Считывает последовательность байтов из текущего потока и перемещает позицию в потоке по числу байтов.

Read(Span<Char>)

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

Read7BitEncodedInt()

Считывает 32-разрядное целое число в сжатом формате.

Read7BitEncodedInt64()

За раз считывает число 7 битов.

ReadBoolean()

Считывает значение из текущего потока и перемещает Boolean текущее положение потока по одному байту.

ReadByte()

Считывает следующий байт из текущего потока и перемещает текущее положение потока на один байт.

ReadBytes(Int32)

Считывает указанное число байтов из текущего потока в массив байтов и перемещает текущее положение на это число байтов.

ReadChar()

Считывает следующий символ из текущего потока и перемещает текущую позицию потока в соответствии с Encoding используемым и определенным символом, считываемым из потока.

ReadChars(Int32)

Считывает указанное число символов из текущего потока, возвращает данные в массиве символов и перемещает текущую позицию в соответствии с Encoding используемым и определенным символом, считываемым из потока.

ReadDecimal()

Считывает десятичное значение из текущего потока и перемещает текущее положение потока на шестнадцать байтов.

ReadDouble()

Считывает 8-байтовое значение с плавающей запятой из текущего потока и перемещает текущее положение потока на восемь байтов.

ReadExactly(Span<Byte>)

Считывает байты из текущего потока и перемещает положение в потоке, пока не будет заполнено buffer .

ReadHalf()

Считывает 2-байтовое значение с плавающей запятой из текущего потока и перемещает текущее положение потока на два байта.

ReadInt16()

Считывает 2-байтовое целое число со знаком из текущего потока и перемещает текущее положение потока на два байта.

ReadInt32()

Считывает целое число со знаком 4 байта из текущего потока и перемещает текущее положение потока на четыре байта.

ReadInt64()

Считывает целое число со знаком 8-байтов из текущего потока и перемещает текущее положение потока на восемь байтов.

ReadSByte()

Считывает подписанный байт из этого потока и перемещает текущую позицию потока по одному байту.

ReadSingle()

Считывает 4-байтовое значение с плавающей запятой из текущего потока и перемещает текущее положение потока на четыре байта.

ReadString()

Считывает строку из текущего потока. Строка закодирована длиной в виде целочисленного семи битов за раз.

ReadUInt16()

Считывает 2-байтовое целое число без знака из текущего потока с помощью кодирования маленьких байтов и перемещает положение потока на два байта.

ReadUInt32()

Считывает 4-байтовое целое число без знака из текущего потока и перемещает положение потока на четыре байта.

ReadUInt64()

Считывает 8-байтовое целое число без знака из текущего потока и перемещает положение потока на восемь байтов.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

Имя Описание
IDisposable.Dispose()

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Освобождает, BaseStream если не настроено BinaryReader(Stream, Encoding, Boolean)в противном случае.

Применяется к

См. также раздел