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


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.

Важно!

Этот тип реализует интерфейс 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).

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

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