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() |
Считывает символы из базового потока и перемещает текущую позицию потока в соответствии с |
| Read(Byte[], Int32, Int32) |
Считывает указанное число байтов из потока, начиная с указанной точки в массиве байтов. |
| Read(Char[], Int32, Int32) |
Считывает указанное количество символов из потока, начиная с указанной точки в массиве символов. |
| Read(Span<Byte>) |
Считывает последовательность байтов из текущего потока и перемещает позицию в потоке по числу байтов. |
| Read(Span<Char>) |
Считывает из текущего потока то же количество символов, что и длина предоставленного буфера, записывает их в предоставленный буфер и перемещает текущую позицию в соответствии с |
| Read7BitEncodedInt() |
Считывает 32-разрядное целое число в сжатом формате. |
| Read7BitEncodedInt64() |
За раз считывает число 7 битов. |
| ReadBoolean() |
Считывает значение из текущего потока и перемещает |
| ReadByte() |
Считывает следующий байт из текущего потока и перемещает текущее положение потока на один байт. |
| ReadBytes(Int32) |
Считывает указанное число байтов из текущего потока в массив байтов и перемещает текущее положение на это число байтов. |
| ReadChar() |
Считывает следующий символ из текущего потока и перемещает текущую позицию потока в соответствии с |
| ReadChars(Int32) |
Считывает указанное число символов из текущего потока, возвращает данные в массиве символов и перемещает текущую позицию в соответствии с |
| ReadDecimal() |
Считывает десятичное значение из текущего потока и перемещает текущее положение потока на шестнадцать байтов. |
| ReadDouble() |
Считывает 8-байтовое значение с плавающей запятой из текущего потока и перемещает текущее положение потока на восемь байтов. |
| ReadExactly(Span<Byte>) |
Считывает байты из текущего потока и перемещает положение в потоке, пока не будет заполнено |
| 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)в противном случае. |