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.

Important

Этот тип реализует IDisposable интерфейс. Завершив использование типа, следует избавиться от него напрямую или косвенно. Чтобы удалить тип напрямую, вызовите его Dispose метод в блоке try/catch . Чтобы удалить его косвенно, используйте конструкцию языка, например using (в C#) или Using (в Visual Basic). Дополнительные сведения см. в разделе "Использование объекта, реализующего IDisposable" в IDisposable разделе интерфейса.

Производный класс может переопределить методы этого класса, чтобы дать уникальные кодировки символов.

Конструкторы

Имя Описание
BinaryWriter()

Инициализирует новый экземпляр BinaryWriter класса, записываемого в поток.

BinaryWriter(Stream, Encoding, Boolean)

Инициализирует новый экземпляр класса на основе указанного BinaryWriter потока и кодировки символов, а также при необходимости оставляет поток открытым.

BinaryWriter(Stream, Encoding)

Инициализирует новый экземпляр класса на основе указанного BinaryWriter потока и кодировки символов.

BinaryWriter(Stream)

Инициализирует новый экземпляр класса на основе указанного BinaryWriter потока и с помощью кодировки UTF-8.

Поля

Имя Описание
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[], Int32, Int32)

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

Write(Byte[])

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

Write(Char)

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

Write(Char[], Int32, Int32)

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

Write(Char[])

Записывает массив символов в текущий поток и перемещает текущую позицию потока в соответствии с 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)

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

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

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