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)

Записывает значение типа Boolean длиной один байт в текущий поток, при этом 0 соответствует значению false, а 1 — значению true.

Write(Byte)

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

Write(Byte[])

Записывает массив байтов в базовый поток.

Write(Byte[], Int32, Int32)

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

Write(Char)

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

Write(Char[])

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

Write(Char[], Int32, Int32)

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

Write(Decimal)

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

Write(Double)

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

Write(Half)

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

Write(Int16)

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

Write(Int32)

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

Write(Int64)

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

Write(ReadOnlySpan<Byte>)

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

Write(ReadOnlySpan<Char>)

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

Write(SByte)

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

Write(Single)

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

Write(String)

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

Write(UInt16)

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

Write(UInt32)

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

Write(UInt64)

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

Write7BitEncodedInt(Int32)

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

Write7BitEncodedInt64(Int64)

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

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

IDisposable.Dispose()

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

Методы расширения

ConfigureAwait(IAsyncDisposable, Boolean)

Настраивает способ выполнения ожиданий для задач, возвращаемых из асинхронного высвобождаемого объекта.

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

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