Прочитать на английском

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


BinaryReader Класс

Определение

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

C#
public class BinaryReader : IDisposable
C#
[System.Runtime.InteropServices.ComVisible(true)]
public class BinaryReader : IDisposable
Наследование
BinaryReader
Атрибуты
Реализации

Примеры

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

C#
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);
        }
    }
}

Комментарии

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

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

Важно!

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

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

BinaryReader(Stream)

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

BinaryReader(Stream, Encoding)

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

BinaryReader(Stream, Encoding, Boolean)

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

Свойства

BaseStream

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

Методы

Close()

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

Dispose()

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

Dispose(Boolean)

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

Equals(Object)

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

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

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

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()

Считывает число блоками по семь битов.

ReadBoolean()

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

ReadByte()

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

ReadBytes(Int32)

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

ReadChar()

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

ReadChars(Int32)

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

ReadDecimal()

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

ReadDouble()

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

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

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

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

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