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

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


BinaryWriter Класс

Определение

Записывает примитивные типы в двоичный файл в поток и поддерживает запись строк в определенной кодировке.

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
Наследование
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);
        }
    }
}

Комментарии

Класс 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)

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

Write(Half)

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

Write(Int16)

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

Write(Int32)

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

Write(Int64)

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

Write(ReadOnlySpan<Byte>)

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

Write(ReadOnlySpan<Char>)

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

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)

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

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

Продукт Версии
.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

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