BinaryWriter Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Записывает примитивные типы в двоичный файл в поток и поддерживает запись строк в определенной кодировке.
public ref class BinaryWriter : IDisposable
public ref class BinaryWriter : IAsyncDisposable, IDisposable
public class BinaryWriter : IDisposable
public class BinaryWriter : IAsyncDisposable, IDisposable
[System.Serializable]
public class BinaryWriter : IDisposable
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class BinaryWriter : IDisposable
type BinaryWriter = class
interface IDisposable
type BinaryWriter = class
interface IAsyncDisposable
interface IDisposable
[<System.Serializable>]
type BinaryWriter = class
interface IDisposable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type BinaryWriter = class
interface IDisposable
Public Class BinaryWriter
Implements IDisposable
Public Class BinaryWriter
Implements IAsyncDisposable, IDisposable
- Наследование
-
BinaryWriter
- Атрибуты
- Реализации
Примеры
В следующем примере кода показано, как хранить и извлекать параметры приложения в файле.
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
Комментарии
Класс BinaryWriter предоставляет методы, упрощающие написание примитивных типов данных в поток. Например, можно использовать метод Write для записи логического значения в поток в качестве однобайтового значения. Класс включает методы записи, поддерживающие различные типы данных.
При создании нового экземпляра класса BinaryWriter вы предоставляете поток для записи и при необходимости укажите тип кодирования и оставьте поток открытым после удаления объекта BinaryWriter. Если не указать тип кодирования, используется UTF-8.
Важный
Этот тип реализует интерфейс IDisposable. Завершив использование типа, его следует удалить напрямую или косвенно. Чтобы удалить тип напрямую, вызовите метод Dispose в блоке try
/catch
. Чтобы удалить его косвенно, используйте конструкцию языка, например using
(в C#) или Using
(в Visual Basic). Дополнительные сведения см. в разделе "Использование объекта, реализующего IDisposable" в разделе интерфейса IDisposable.
Производный класс может переопределить методы этого класса, чтобы дать уникальные кодировки символов.
Конструкторы
BinaryWriter() |
Инициализирует новый экземпляр класса BinaryWriter, записываемого в поток. |
BinaryWriter(Stream) |
Инициализирует новый экземпляр класса BinaryWriter на основе указанного потока и кодировки UTF-8. |
BinaryWriter(Stream, Encoding) |
Инициализирует новый экземпляр класса BinaryWriter на основе указанного потока и кодировки символов. |
BinaryWriter(Stream, Encoding, Boolean) |
Инициализирует новый экземпляр класса BinaryWriter на основе указанного потока и кодировки символов, а также при необходимости оставляет поток открытым. |
Поля
Null |
Указывает BinaryWriter без резервного хранилища. |
OutStream |
Содержит базовый поток. |
Свойства
BaseStream |
Возвращает базовый поток BinaryWriter. |
Методы
Close() |
Закрывает текущий BinaryWriter и базовый поток. |
Dispose() |
Освобождает все ресурсы, используемые текущим экземпляром класса BinaryWriter. |
Dispose(Boolean) |
Освобождает неуправляемые ресурсы, используемые BinaryWriter, и при необходимости освобождает управляемые ресурсы. |
DisposeAsync() |
Асинхронно освобождает все ресурсы, используемые текущим экземпляром класса BinaryWriter. |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
Flush() |
Очищает все буферы для текущего модуля записи и приводит к записи буферных данных на базовое устройство. |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
Seek(Int32, SeekOrigin) |
Задает позицию в текущем потоке. |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
Write(Boolean) |
Записывает однобайтовое |
Write(Byte) |
Записывает незаписанный байт в текущий поток и перемещает позицию потока по одному байту. |
Write(Byte[]) |
Записывает массив байтов в базовый поток. |
Write(Byte[], Int32, Int32) |
Записывает область массива байтов в текущий поток. |
Write(Char) |
Записывает символ Юникода в текущий поток и перемещает текущее положение потока в соответствии с используемым |
Write(Char[]) |
Записывает массив символов в текущий поток и перемещает текущее положение потока в соответствии с используемым |
Write(Char[], Int32, Int32) |
Записывает раздел массива символов в текущий поток и перемещает текущую позицию потока в соответствии с используемым |
Write(Decimal) |
Записывает десятичное значение в текущий поток и перемещает позицию потока на шестнадцать байтов. |
Write(Double) |
Записывает значение с плавающей запятой восьмибайтов в текущий поток и перемещает позицию потока на восемь байтов. |
Write(Half) |
Записывает значение с плавающей запятой с двумя байтами в текущий поток и перемещает позицию потока на два байта. |
Write(Int16) |
Записывает двухбайтовое целое число со знаком в текущий поток и перемещает позицию потока на два байта. |
Write(Int32) |
Записывает целое число с четырьмя байтами в текущий поток и перемещает позицию потока на четыре байта. |
Write(Int64) |
Записывает целое число с восемью байтами в текущий поток и перемещает позицию потока на восемь байтов. |
Write(ReadOnlySpan<Byte>) |
Записывает диапазон байтов в текущий поток. |
Write(ReadOnlySpan<Char>) |
Записывает диапазон символов в текущий поток и перемещает текущую позицию потока в соответствии с используемым |
Write(SByte) |
Записывает подписанный байт в текущий поток и перемещает позицию потока по одному байту. |
Write(Single) |
Записывает значение с плавающей запятой четырехбайтов в текущий поток и перемещает позицию потока на четыре байта. |
Write(String) |
Записывает строку с префиксом длины в этот поток в текущей кодировке BinaryWriterи перемещает текущую позицию потока в соответствии с кодировкой, используемой и определенными символами, записанными в поток. |
Write(UInt16) |
Записывает двухбайтовое целое число без знака в текущий поток и перемещает позицию потока на два байта. |
Write(UInt32) |
Записывает целое число без знака в текущий поток и перемещает позицию потока на четыре байта. |
Write(UInt64) |
Записывает восьмибайтовое целое число без знака в текущий поток и перемещает позицию потока на восемь байтов. |
Write7BitEncodedInt(Int32) |
Записывает 32-разрядное целое число в сжатый формат. |
Write7BitEncodedInt64(Int64) |
Записывает число 7 бит за раз. |
Явные реализации интерфейса
IDisposable.Dispose() |
Освобождает неуправляемые ресурсы, используемые BinaryWriter, и при необходимости освобождает управляемые ресурсы. |
Методы расширения
ConfigureAwait(IAsyncDisposable, Boolean) |
Настраивает способ ожидания задач, возвращаемых из асинхронного удаления. |