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


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)

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

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)

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

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

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