BinaryWriter.Write Метод

Определение

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

Перегрузки

Имя Описание
Write(Char[], Int32, Int32)

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

Write(Byte[], Int32, Int32)

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

Write(UInt64)

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

Write(UInt32)

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

Write(UInt16)

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

Write(String)

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

Write(Single)

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

Write(SByte)

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

Write(ReadOnlySpan<Char>)

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

Write(ReadOnlySpan<Byte>)

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

Write(Int64)

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

Write(Char[])

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

Write(Int16)

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

Write(Half)

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

Write(Double)

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

Write(Decimal)

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

Write(Char)

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

Write(Byte[])

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

Write(Byte)

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

Write(Boolean)

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

Write(Int32)

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

Write(Char[], Int32, Int32)

Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs

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

public:
 virtual void Write(cli::array <char> ^ chars, int index, int count);
public virtual void Write(char[] chars, int index, int count);
abstract member Write : char[] * int * int -> unit
override this.Write : char[] * int * int -> unit
Public Overridable Sub Write (chars As Char(), index As Integer, count As Integer)

Параметры

chars
Char[]

Массив символов, содержащий данные для записи.

index
Int32

Индекс первого символа для чтения и chars записи в поток.

count
Int32

Число символов для чтения и chars записи в поток.

Исключения

Длина буфера минус index меньше count.

chars равно null.

index или count отрицательный.

Возникает ошибка ввода-вывода.

Поток закрыт.

Примеры

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

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        char[] invalidPathChars = Path.InvalidPathChars;
        MemoryStream memStream = new MemoryStream();
        BinaryWriter binWriter = new BinaryWriter(memStream);

        // Write to memory.
        binWriter.Write("Invalid file path characters are: ");
        binWriter.Write(
            Path.InvalidPathChars, 0, Path.InvalidPathChars.Length);

        // Create the reader using the same MemoryStream
        // as used with the writer.
        BinaryReader binReader = new BinaryReader(memStream);

        // Set Position to the beginning of the stream.
        memStream.Position = 0;

        // Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString());
        int arraySize = (int)(memStream.Length - memStream.Position);
        char[] memoryData = new char[arraySize];
        binReader.Read(memoryData, 0, arraySize);
        Console.WriteLine(memoryData);
    }
}
open System.IO

let invalidPathChars = Path.GetInvalidPathChars()
let memStream = new MemoryStream()
let binWriter = new BinaryWriter(memStream)

// Write to memory.
binWriter.Write "Invalid file path characters are: "
binWriter.Write(invalidPathChars, 0, invalidPathChars.Length)

// Create the reader using the same MemoryStream
// as used with the writer.
let binReader = new BinaryReader(memStream)

// Set Position to the beginning of the stream.
memStream.Position <- 0

// Read the data from memory and write it to the console.
printf $"{binReader.ReadString()}"
let arraySize = memStream.Length - memStream.Position |> int
let memoryData = Array.zeroCreate<char> arraySize
binReader.Read(memoryData, 0, arraySize) |> ignore
printfn $"{memoryData}"
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()
    
        Dim invalidPathChars() As Char = Path.InvalidPathChars
        Dim memStream As new MemoryStream()
        Dim binWriter As New BinaryWriter(memStream)

        ' Write to memory.
        binWriter.Write("Invalid file path characters are: ")
        binWriter.Write(Path.InvalidPathChars, 0, _
            Path.InvalidPathChars.Length)

        ' Create the reader using the same MemoryStream 
        ' as used with the writer.
        Dim binReader As New BinaryReader(memStream)

        ' Set Position to the beginning of the stream.
        memStream.Position = 0

        ' Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString())
        Dim upperBound As Integer = _
            CInt(memStream.Length - memStream.Position) - 1
        Dim memoryData(upperBound) As Char
        binReader.Read(memoryData, 0, upperBound)
        Console.WriteLine(memoryData)
    
    End Sub
End Class

Комментарии

Список распространенных задач ввода-вывода см. в разделе Распространенные задачи ввода-вывода.

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

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

Write(Byte[], Int32, Int32)

Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs

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

public:
 virtual void Write(cli::array <System::Byte> ^ buffer, int index, int count);
public virtual void Write(byte[] buffer, int index, int count);
abstract member Write : byte[] * int * int -> unit
override this.Write : byte[] * int * int -> unit
Public Overridable Sub Write (buffer As Byte(), index As Integer, count As Integer)

Параметры

buffer
Byte[]

Массив байтов, содержащий данные для записи.

index
Int32

Индекс первого байта для чтения и buffer записи в поток.

count
Int32

Количество байтов для чтения и buffer записи в поток.

Исключения

Длина буфера минус index меньше count.

buffer равно null.

index или count отрицательный.

Возникает ошибка ввода-вывода.

Поток закрыт.

Примеры

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

using System;
using System.IO;

namespace BinaryRW
{
    class Program
    {
        static void Main(string[] args)
        {
            const int arrayLength = 1000;
            byte[] dataArray = new byte[arrayLength];
            byte[] verifyArray = new byte[arrayLength];

            new Random().NextBytes(dataArray);

            using (BinaryWriter binWriter = new BinaryWriter(new MemoryStream()))
            {
                Console.WriteLine("Writing the data.");
                binWriter.Write(dataArray, 0, arrayLength);

                using (BinaryReader binReader = new BinaryReader(binWriter.BaseStream))
                {
                    binReader.BaseStream.Position = 0;

                    if (binReader.Read(verifyArray, 0, arrayLength) != arrayLength)
                    {
                        Console.WriteLine("Error writing the data.");
                        return;
                    }
                }
            }

            for (int i = 0; i < arrayLength; i++)
            {
                if (verifyArray[i] != dataArray[i])
                {
                    Console.WriteLine("Error writing the data.");
                    return;
                }
            }

            Console.WriteLine("The data was written and verified.");
        }
    }
}
open System
open System.IO

let arrayLength = 1000
let dataArray = Array.zeroCreate<byte> arrayLength
let verifyArray = Array.zeroCreate<byte> arrayLength

Random().NextBytes dataArray

do
    use binWriter = new BinaryWriter(new MemoryStream())
    printfn "Writing the data."
    binWriter.Write(dataArray, 0, arrayLength)

    use binReader = new BinaryReader(binWriter.BaseStream)
    binReader.BaseStream.Position <- 0

    if binReader.Read(verifyArray, 0, arrayLength) <> arrayLength then
        printfn "Error writing the data."
    else
        for i = 0 to arrayLength - 1 do
            if verifyArray[i] <> dataArray[i] then
                printfn "Error writing the data."
            else
                printfn "The data was written and verified."
Imports System.IO

Module Module1

    Sub Main()
        Const upperBound As Integer = 1000
        Dim dataArray(upperBound) As Byte
        Dim verifyArray(upperBound) As Byte

        Dim randomGenerator As New Random
        randomGenerator.NextBytes(dataArray)

        Using binWriter As New BinaryWriter(New MemoryStream())
            Console.WriteLine("Writing the data.")
            binWriter.Write(dataArray, 0, dataArray.Length)

            Using binReader As New BinaryReader(binWriter.BaseStream)
                binReader.BaseStream.Position = 0

                If binReader.Read(verifyArray, 0, dataArray.Length) <> dataArray.Length Then
                    Console.WriteLine("Error writing the data.")
                    Return
                End If
            End Using
        End Using

        For i As Integer = 0 To upperBound
            If verifyArray(i) <> dataArray(i) Then
                Console.WriteLine("Error writing the data.")
                Return
            End If
        Next i

        Console.WriteLine("The data was written and verified.")
    End Sub

End Module

Комментарии

Список распространенных задач ввода-вывода см. в разделе Распространенные задачи ввода-вывода.

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

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

Write(UInt64)

Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs

Важно!

Этот API несовместим с CLS.

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

public:
 virtual void Write(System::UInt64 value);
[System.CLSCompliant(false)]
public virtual void Write(ulong value);
[<System.CLSCompliant(false)>]
abstract member Write : uint64 -> unit
override this.Write : uint64 -> unit
Public Overridable Sub Write (value As ULong)

Параметры

value
UInt64

8-байтовое целое число без знака для записи.

Атрибуты

Исключения

Возникает ошибка ввода-вывода.

Поток закрыт.

Комментарии

BinaryWriter сохраняет этот тип данных в малом формате эндиана.

Список распространенных задач ввода-вывода см. в разделе Распространенные задачи ввода-вывода.

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

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

Write(UInt32)

Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs

Важно!

Этот API несовместим с CLS.

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

public:
 virtual void Write(System::UInt32 value);
[System.CLSCompliant(false)]
public virtual void Write(uint value);
[<System.CLSCompliant(false)>]
abstract member Write : uint32 -> unit
override this.Write : uint32 -> unit
Public Overridable Sub Write (value As UInteger)

Параметры

value
UInt32

Четырехбайтовое целое число без знака для записи.

Атрибуты

Исключения

Возникает ошибка ввода-вывода.

Поток закрыт.

Комментарии

BinaryWriter сохраняет этот тип данных в малом формате эндиана.

Список распространенных задач ввода-вывода см. в разделе Распространенные задачи ввода-вывода.

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

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

Write(UInt16)

Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs

Важно!

Этот API несовместим с CLS.

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

public:
 virtual void Write(System::UInt16 value);
[System.CLSCompliant(false)]
public virtual void Write(ushort value);
[<System.CLSCompliant(false)>]
abstract member Write : uint16 -> unit
override this.Write : uint16 -> unit
Public Overridable Sub Write (value As UShort)

Параметры

value
UInt16

Целое число без знака двухбайтов для записи.

Атрибуты

Исключения

Возникает ошибка ввода-вывода.

Поток закрыт.

Комментарии

BinaryWriter сохраняет этот тип данных в малом формате эндиана.

Список распространенных задач ввода-вывода см. в разделе Распространенные задачи ввода-вывода.

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

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

Write(String)

Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs

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

public:
 virtual void Write(System::String ^ value);
public virtual void Write(string value);
abstract member Write : string -> unit
override this.Write : string -> unit
Public Overridable Sub Write (value As String)

Параметры

value
String

Значение для записи.

Исключения

Возникает ошибка ввода-вывода.

value равно null.

Поток закрыт.

Примеры

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

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 кодировки экземпляра в поток. Это значение записывается как целое число без знака. Затем этот метод записывает в поток много байтов.

Например, строка "A" имеет длину 1, но при кодировании с помощью UTF-16; Длина составляет 2 байта, поэтому значение, записанное в префиксе, равно 2, и 3 байта записываются в поток, включая префикс.

Список распространенных задач ввода-вывода см. в разделе Распространенные задачи ввода-вывода.

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

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

Write(Single)

Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs

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

public:
 virtual void Write(float value);
public virtual void Write(float value);
abstract member Write : single -> unit
override this.Write : single -> unit
Public Overridable Sub Write (value As Single)

Параметры

value
Single

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

Исключения

Возникает ошибка ввода-вывода.

Поток закрыт.

Примеры

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

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(SByte)

Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs

Важно!

Этот API несовместим с CLS.

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

public:
 virtual void Write(System::SByte value);
[System.CLSCompliant(false)]
public virtual void Write(sbyte value);
[<System.CLSCompliant(false)>]
abstract member Write : sbyte -> unit
override this.Write : sbyte -> unit
Public Overridable Sub Write (value As SByte)

Параметры

value
SByte

Подписанный байт для записи.

Атрибуты

Исключения

Возникает ошибка ввода-вывода.

Поток закрыт.

Комментарии

Список распространенных задач ввода-вывода см. в разделе Распространенные задачи ввода-вывода.

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

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

Write(ReadOnlySpan<Char>)

Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs

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

public:
 virtual void Write(ReadOnlySpan<char> chars);
public virtual void Write(ReadOnlySpan<char> chars);
abstract member Write : ReadOnlySpan<char> -> unit
override this.Write : ReadOnlySpan<char> -> unit
Public Overridable Sub Write (chars As ReadOnlySpan(Of Char))

Параметры

chars
ReadOnlySpan<Char>

Диапазон символов для записи.

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

Write(ReadOnlySpan<Byte>)

Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs

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

public:
 virtual void Write(ReadOnlySpan<System::Byte> buffer);
public virtual void Write(ReadOnlySpan<byte> buffer);
abstract member Write : ReadOnlySpan<byte> -> unit
override this.Write : ReadOnlySpan<byte> -> unit
Public Overridable Sub Write (buffer As ReadOnlySpan(Of Byte))

Параметры

buffer
ReadOnlySpan<Byte>

Диапазон байтов для записи.

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

Write(Int64)

Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs

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

public:
 virtual void Write(long value);
public virtual void Write(long value);
abstract member Write : int64 -> unit
override this.Write : int64 -> unit
Public Overridable Sub Write (value As Long)

Параметры

value
Int64

Целое число, подписанное восемью байтами для записи.

Исключения

Возникает ошибка ввода-вывода.

Поток закрыт.

Комментарии

BinaryWriter сохраняет этот тип данных в малом формате эндиана.

Список распространенных задач ввода-вывода см. в разделе Распространенные задачи ввода-вывода.

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

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

Write(Char[])

Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs

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

public:
 virtual void Write(cli::array <char> ^ chars);
public virtual void Write(char[] chars);
abstract member Write : char[] -> unit
override this.Write : char[] -> unit
Public Overridable Sub Write (chars As Char())

Параметры

chars
Char[]

Массив символов, содержащий данные для записи.

Исключения

chars равно null.

Поток закрыт.

Возникает ошибка ввода-вывода.

Примеры

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

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        char[] invalidPathChars = Path.InvalidPathChars;
        MemoryStream memStream = new MemoryStream();
        BinaryWriter binWriter = new BinaryWriter(memStream);

        // Write to memory.
        binWriter.Write("Invalid file path characters are: ");
        binWriter.Write(Path.InvalidPathChars);

        // Create the reader using the same MemoryStream
        // as used with the writer.
        BinaryReader binReader = new BinaryReader(memStream);

        // Set Position to the beginning of the stream.
        memStream.Position = 0;

        // Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString());
        Console.WriteLine(binReader.ReadChars(
            (int)(memStream.Length - memStream.Position)));
    }
}
open System.IO

let invalidPathChars = Path.GetInvalidPathChars()
let memStream = new MemoryStream()
let binWriter = new BinaryWriter(memStream)

// Write to memory.
binWriter.Write "Invalid file path characters are: "
binWriter.Write invalidPathChars

// Create the reader using the same MemoryStream
// as used with the writer.
let binReader = new BinaryReader(memStream)

// Set Position to the beginning of the stream.
memStream.Position <- 0

// Read the data from memory and write it to the console.
printf $"{binReader.ReadString()}"
printfn $"{binReader.ReadChars(int (memStream.Length - memStream.Position))}"
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()
    
        Dim invalidPathChars() As Char = Path.InvalidPathChars
        Dim memStream As new MemoryStream()
        Dim binWriter As New BinaryWriter(memStream)

        ' Write to memory.
        binWriter.Write("Invalid file path characters are: ")
        binWriter.Write(Path.InvalidPathChars)

        ' Create the reader using the same MemoryStream 
        ' as used with the writer.
        Dim binReader As New BinaryReader(memStream)

        ' Set Position to the beginning of the stream.
        memStream.Position = 0

        ' Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString())
        Console.WriteLine(binReader.ReadChars( _
            CInt(memStream.Length - memStream.Position)))
    
    End Sub
End Class

Комментарии

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

Для этого... См. пример в этом разделе...
Создайте текстовый файл. Практическое руководство. Запись текста в файл
Запись в текстовый файл. Практическое руководство. Запись текста в файл
Чтение из текстового файла. Практическое руководство. Чтение текста из файла
Добавление текста в файл. Практическое руководство. Открытие и добавление в файл журнала

File.AppendText

FileInfo.AppendText
Получение размера файла. FileInfo.Length
Получение атрибутов файла. File.GetAttributes
Задайте атрибуты файла. File.SetAttributes
Определите, существует ли файл. File.Exists
Чтение из двоичного файла. Практическое руководство. Чтение и запись в только что созданный файл данных
Запись в двоичный файл. Практическое руководство. Чтение и запись в только что созданный файл данных

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

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

Write(Int16)

Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs

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

public:
 virtual void Write(short value);
public virtual void Write(short value);
abstract member Write : int16 -> unit
override this.Write : int16 -> unit
Public Overridable Sub Write (value As Short)

Параметры

value
Int16

Целое число со знаком с двумя байтами для записи.

Исключения

Возникает ошибка ввода-вывода.

Поток закрыт.

Комментарии

BinaryWriter сохраняет этот тип данных в малом формате эндиана.

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

Для этого... См. пример в этом разделе...
Создайте текстовый файл. Практическое руководство. Запись текста в файл
Запись в текстовый файл. Практическое руководство. Запись текста в файл
Чтение из текстового файла. Практическое руководство. Чтение текста из файла
Добавление текста в файл. Практическое руководство. Открытие и добавление в файл журнала

File.AppendText

FileInfo.AppendText
Получение размера файла. FileInfo.Length
Получение атрибутов файла. File.GetAttributes
Задайте атрибуты файла. File.SetAttributes
Определите, существует ли файл. File.Exists
Чтение из двоичного файла. Практическое руководство. Чтение и запись в только что созданный файл данных
Запись в двоичный файл. Практическое руководство. Чтение и запись в только что созданный файл данных

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

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

Write(Half)

Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs

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

public:
 virtual void Write(Half value);
public virtual void Write(Half value);
abstract member Write : Half -> unit
override this.Write : Half -> unit
Public Overridable Sub Write (value As Half)

Параметры

value
Half

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

Исключения

Возникает ошибка ввода-вывода.

Поток закрыт.

Примеры

В следующем примере кода показано, как считывать и записывать Double данные в память с помощью BinaryReader и BinaryWriter классов на вершине MemoryStream класса. MemoryStream только считывает Byte и записывает данные.

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        int i;
        const int arrayLength = 1000;

        // Create random data to write to the stream.
        Random randomGenerator = new Random();
        double[] dataArray = new double[arrayLength];
        for(i = 0; i < arrayLength; i++)
        {
            dataArray[i] = 100.1 * randomGenerator.NextDouble();
        }

        using(BinaryWriter binWriter =
            new BinaryWriter(new MemoryStream()))
        {
            // Write the data to the stream.
            Console.WriteLine("Writing data to the stream.");
            for(i = 0; i < arrayLength; i++)
            {
                binWriter.Write(dataArray[i]);
            }

            // Create a reader using the stream from the writer.
            using(BinaryReader binReader =
                new BinaryReader(binWriter.BaseStream))
            {
                try
                {
                    // Return to the beginning of the stream.
                    binReader.BaseStream.Position = 0;

                    // Read and verify the data.
                    Console.WriteLine("Verifying the written data.");
                    for(i = 0; i < arrayLength; i++)
                    {
                        if(binReader.ReadDouble() != dataArray[i])
                        {
                            Console.WriteLine("Error writing data.");
                            break;
                        }
                    }
                    Console.WriteLine("The data was written " +
                        "and verified.");
                }
                catch(EndOfStreamException e)
                {
                    Console.WriteLine("Error writing data: {0}.",
                        e.GetType().Name);
                }
            }
        }
    }
}
open System
open System.IO

let arrayLength = 1000

// Create random data to write to the stream.
let randomGenerator = Random()
let dataArray = 
    Array.init arrayLength (fun _ -> 100.1 * randomGenerator.NextDouble())
do
    use binWriter = new BinaryWriter(new MemoryStream())
    // Write the data to the stream.
    printfn $"Writing data to the stream."
    for num in dataArray do
        binWriter.Write num

    // Create a reader using the stream from the writer.
    use binReader = new BinaryReader(binWriter.BaseStream)
    try
        // Return to the beginning of the stream.
        binReader.BaseStream.Position <- 0

        // Read and verify the data.
        printfn "Verifying the written data."
        for num in dataArray do
            if binReader.ReadDouble() <> num then
                printfn "Error writing data."
        printfn "The data was written and verified."
    with :? EndOfStreamException as e ->
        printfn $"Error writing data: {e.GetType().Name}."
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()
    
        Dim i As Integer
        Const upperBound As Integer = 1000

        ' Create random data to write to the stream.
        Dim dataArray(upperBound) As Double
        Dim randomGenerator As New Random()
        For i = 0 To upperBound
            dataArray(i) = 100.1 * randomGenerator.NextDouble()
        Next i

        Dim binWriter As New BinaryWriter(New MemoryStream())
        Try

            ' Write data to the stream.
            Console.WriteLine("Writing data to the stream.")
            
            For i = 0 To upperBound
                binWriter.Write(dataArray(i))
            Next i

            ' Create a reader using the stream from the writer.
            Dim binReader As New BinaryReader(binWriter.BaseStream)

            ' Return to the beginning of the stream.
            binReader.BaseStream.Position = 0

            ' Read and verify the data.
            Try
                Console.WriteLine("Verifying the written data.")
                For i = 0 To upperBound
                    If binReader.ReadDouble() <> dataArray(i) Then
                        Console.WriteLine("Error writing data.")
                        Exit For
                    End If
                Next i
                Console.WriteLine("The data was written and verified.")
            Catch ex As EndOfStreamException
                Console.WriteLine("Error writing data: {0}.", _
                    ex.GetType().Name)
            End Try
        Finally
            binWriter.Close()
        End Try

    End Sub
End Class

Комментарии

Список распространенных задач ввода-вывода см. в разделе Распространенные задачи ввода-вывода.

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

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

Write(Double)

Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs

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

public:
 virtual void Write(double value);
public virtual void Write(double value);
abstract member Write : double -> unit
override this.Write : double -> unit
Public Overridable Sub Write (value As Double)

Параметры

value
Double

8-байтовое значение с плавающей запятой для записи.

Исключения

Возникает ошибка ввода-вывода.

Поток закрыт.

Примеры

В следующем примере кода показано, как считывать и записывать Double данные в память с помощью BinaryReader и BinaryWriter классов на вершине MemoryStream класса. MemoryStream только считывает Byte и записывает данные.

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        int i;
        const int arrayLength = 1000;

        // Create random data to write to the stream.
        Random randomGenerator = new Random();
        double[] dataArray = new double[arrayLength];
        for(i = 0; i < arrayLength; i++)
        {
            dataArray[i] = 100.1 * randomGenerator.NextDouble();
        }

        using(BinaryWriter binWriter =
            new BinaryWriter(new MemoryStream()))
        {
            // Write the data to the stream.
            Console.WriteLine("Writing data to the stream.");
            for(i = 0; i < arrayLength; i++)
            {
                binWriter.Write(dataArray[i]);
            }

            // Create a reader using the stream from the writer.
            using(BinaryReader binReader =
                new BinaryReader(binWriter.BaseStream))
            {
                try
                {
                    // Return to the beginning of the stream.
                    binReader.BaseStream.Position = 0;

                    // Read and verify the data.
                    Console.WriteLine("Verifying the written data.");
                    for(i = 0; i < arrayLength; i++)
                    {
                        if(binReader.ReadDouble() != dataArray[i])
                        {
                            Console.WriteLine("Error writing data.");
                            break;
                        }
                    }
                    Console.WriteLine("The data was written " +
                        "and verified.");
                }
                catch(EndOfStreamException e)
                {
                    Console.WriteLine("Error writing data: {0}.",
                        e.GetType().Name);
                }
            }
        }
    }
}
open System
open System.IO

let arrayLength = 1000

// Create random data to write to the stream.
let randomGenerator = Random()
let dataArray = 
    Array.init arrayLength (fun _ -> 100.1 * randomGenerator.NextDouble())
do
    use binWriter = new BinaryWriter(new MemoryStream())
    // Write the data to the stream.
    printfn $"Writing data to the stream."
    for num in dataArray do
        binWriter.Write num

    // Create a reader using the stream from the writer.
    use binReader = new BinaryReader(binWriter.BaseStream)
    try
        // Return to the beginning of the stream.
        binReader.BaseStream.Position <- 0

        // Read and verify the data.
        printfn "Verifying the written data."
        for num in dataArray do
            if binReader.ReadDouble() <> num then
                printfn "Error writing data."
        printfn "The data was written and verified."
    with :? EndOfStreamException as e ->
        printfn $"Error writing data: {e.GetType().Name}."
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()
    
        Dim i As Integer
        Const upperBound As Integer = 1000

        ' Create random data to write to the stream.
        Dim dataArray(upperBound) As Double
        Dim randomGenerator As New Random()
        For i = 0 To upperBound
            dataArray(i) = 100.1 * randomGenerator.NextDouble()
        Next i

        Dim binWriter As New BinaryWriter(New MemoryStream())
        Try

            ' Write data to the stream.
            Console.WriteLine("Writing data to the stream.")
            
            For i = 0 To upperBound
                binWriter.Write(dataArray(i))
            Next i

            ' Create a reader using the stream from the writer.
            Dim binReader As New BinaryReader(binWriter.BaseStream)

            ' Return to the beginning of the stream.
            binReader.BaseStream.Position = 0

            ' Read and verify the data.
            Try
                Console.WriteLine("Verifying the written data.")
                For i = 0 To upperBound
                    If binReader.ReadDouble() <> dataArray(i) Then
                        Console.WriteLine("Error writing data.")
                        Exit For
                    End If
                Next i
                Console.WriteLine("The data was written and verified.")
            Catch ex As EndOfStreamException
                Console.WriteLine("Error writing data: {0}.", _
                    ex.GetType().Name)
            End Try
        Finally
            binWriter.Close()
        End Try

    End Sub
End Class

Комментарии

Список распространенных задач ввода-вывода см. в разделе Распространенные задачи ввода-вывода.

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

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

Write(Decimal)

Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs

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

public:
 virtual void Write(System::Decimal value);
public virtual void Write(decimal value);
abstract member Write : decimal -> unit
override this.Write : decimal -> unit
Public Overridable Sub Write (value As Decimal)

Параметры

value
Decimal

Десятичное значение для записи.

Исключения

Возникает ошибка ввода-вывода.

Поток закрыт.

Комментарии

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

Для этого... См. пример в этом разделе...
Создайте текстовый файл. Практическое руководство. Запись текста в файл
Запись в текстовый файл. Практическое руководство. Запись текста в файл
Чтение из текстового файла. Практическое руководство. Чтение текста из файла
Добавление текста в файл. Практическое руководство. Открытие и добавление в файл журнала

File.AppendText

FileInfo.AppendText
Получение размера файла. FileInfo.Length
Получение атрибутов файла. File.GetAttributes
Задайте атрибуты файла. File.SetAttributes
Определите, существует ли файл. File.Exists
Чтение из двоичного файла. Практическое руководство. Чтение и запись в только что созданный файл данных
Запись в двоичный файл. Практическое руководство. Чтение и запись в только что созданный файл данных

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

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

Write(Char)

Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs

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

public:
 virtual void Write(char ch);
public virtual void Write(char ch);
abstract member Write : char -> unit
override this.Write : char -> unit
Public Overridable Sub Write (ch As Char)

Параметры

ch
Char

Не суррогатный символ Юникода для записи.

Исключения

Возникает ошибка ввода-вывода.

Поток закрыт.

ch является одним суррогатным символом.

Примеры

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

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        int i = 0;
        char[] invalidPathChars = Path.InvalidPathChars;
        MemoryStream memStream = new MemoryStream();
        BinaryWriter binWriter = new BinaryWriter(memStream);

        // Write to memory.
        binWriter.Write("Invalid file path characters are: ");
        for(i = 0; i < invalidPathChars.Length; i++)
        {
            binWriter.Write(invalidPathChars[i]);
        }

        // Create the reader using the same MemoryStream
        // as used with the writer.
        BinaryReader binReader = new BinaryReader(memStream);

        // Set Position to the beginning of the stream.
        memStream.Position = 0;

        // Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString());
        char[] memoryData =
            new char[memStream.Length - memStream.Position];
        for(i = 0; i < memoryData.Length; i++)
        {
            memoryData[i] = binReader.ReadChar();
        }
        Console.WriteLine(memoryData);
    }
}
open System.IO

let invalidPathChars = Path.GetInvalidPathChars()
let memStream = new MemoryStream()
let binWriter = new BinaryWriter(memStream)

// Write to memory.
binWriter.Write "Invalid file path characters are: "
for i = 0 to invalidPathChars.Length - 1 do
    binWriter.Write invalidPathChars[i]

// Create the reader using the same MemoryStream
// as used with the writer.
let binReader = new BinaryReader(memStream)

// Set Position to the beginning of the stream.
memStream.Position <- 0

// Read the data from memory and write it to the console.
printf $"{binReader.ReadString()}"
let memoryData = Array.zeroCreate<char> (int (memStream.Length - memStream.Position))
for i = 0 to memoryData.Length - 1 do
    memoryData[i] <- binReader.ReadChar()
printfn $"{memoryData}"
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()
    
        Dim i As Integer = 0
        Dim invalidPathChars() As Char = Path.InvalidPathChars
        Dim memStream As new MemoryStream()
        Dim binWriter As New BinaryWriter(memStream)

        ' Write to memory.
        binWriter.Write("Invalid file path characters are: ")
        For i = 0 To invalidPathChars.Length - 1
            binWriter.Write(invalidPathChars(i))
        Next i

        ' Create the reader using the same MemoryStream 
        ' as used with the writer.
        Dim binReader As New BinaryReader(memStream)

        ' Set Position to the beginning of the stream.
        memStream.Position = 0

        ' Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString())
        Dim memoryData( _
            CInt(memStream.Length - memStream.Position) - 1) As Char
        For i = 0 To memoryData.Length - 1
            memoryData(i) = binReader.ReadChar()
        Next i
        Console.WriteLine(memoryData)
    
    End Sub
End Class

Комментарии

Из-за конфликтов форматирования данных этот метод со следующими кодировками не рекомендуется:

  • UTF-7

  • ISO-2022-JP

  • ISCII

Список распространенных задач ввода-вывода см. в разделе Распространенные задачи ввода-вывода.

Суррогатные символы Юникода должны быть записаны как пары вместе в одном вызове, а не по отдельности. Если требуется поддержка суррогатных пар в приложении, рассмотрите возможность использования массива символов и перегрузки Write метода.

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

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

Write(Byte[])

Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs

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

public:
 virtual void Write(cli::array <System::Byte> ^ buffer);
public virtual void Write(byte[] buffer);
abstract member Write : byte[] -> unit
override this.Write : byte[] -> unit
Public Overridable Sub Write (buffer As Byte())

Параметры

buffer
Byte[]

Массив байтов, содержащий данные для записи.

Исключения

Возникает ошибка ввода-вывода.

Поток закрыт.

buffer равно null.

Примеры

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

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        const int arrayLength = 1000;

        // Create random data to write to the stream.
        byte[] dataArray = new byte[arrayLength];
        new Random().NextBytes(dataArray);

        BinaryWriter binWriter = new BinaryWriter(new MemoryStream());

        // Write the data to the stream.
        Console.WriteLine("Writing the data.");
        binWriter.Write(dataArray);

        // Create the reader using the stream from the writer.
        BinaryReader binReader =
            new BinaryReader(binWriter.BaseStream);

        // Set Position to the beginning of the stream.
        binReader.BaseStream.Position = 0;

        // Read and verify the data.
        byte[] verifyArray = binReader.ReadBytes(arrayLength);
        if(verifyArray.Length != arrayLength)
        {
            Console.WriteLine("Error writing the data.");
            return;
        }
        for(int i = 0; i < arrayLength; i++)
        {
            if(verifyArray[i] != dataArray[i])
            {
                Console.WriteLine("Error writing the data.");
                return;
            }
        }
        Console.WriteLine("The data was written and verified.");
    }
}
open System
open System.IO

let arrayLength = 1000

// Create random data to write to the stream.
let dataArray = Array.zeroCreate<byte> arrayLength
Random().NextBytes dataArray

let binWriter = new BinaryWriter(new MemoryStream())

// Write the data to the stream.ch
printfn "Writing the data."
binWriter.Write dataArray

// Create the reader using the stream from the writer.
let binReader = new BinaryReader(binWriter.BaseStream)

// Set Position to the beginning of the stream.
binReader.BaseStream.Position <- 0

// Read and verify the data.
let verifyArray = binReader.ReadBytes arrayLength
if verifyArray.Length <> arrayLength then
    printfn "Error writing the data."
else
    let mutable failed = false
    for i = 0 to arrayLength - 1 do
        if verifyArray[i] <> dataArray[i] then
            printfn "Error writing the data."
            failed <- true
    if not failed then
        printfn "The data was written and verified."
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()
    
        Const upperBound As Integer = 1000

        ' Create random data to write to the stream.
        Dim dataArray(upperBound) As Byte
        Dim randomGenerator As New Random
        randomGenerator.NextBytes(dataArray)

        Dim binWriter As New BinaryWriter(New MemoryStream())

        ' Write the data to the stream.
        Console.WriteLine("Writing the data.")
        binWriter.Write(dataArray)

        ' Create the reader using the stream from the writer.
        Dim binReader As New BinaryReader(binWriter.BaseStream)

        ' Set the stream position to the beginning of the stream.
        binReader.BaseStream.Position = 0

        ' Read and verify the data.
        Dim verifyArray() As Byte = _
            binReader.ReadBytes(dataArray.Length)
        If verifyArray.Length <> dataArray.Length Then
            Console.WriteLine("Error writing the data.")
            Return
        End If
        For i As Integer = 0 To upperBound
            If verifyArray(i) <> dataArray(i) Then
                Console.WriteLine("Error writing the data.")
                Return
            End If
        Next i
        Console.WriteLine("The data was written and verified.")
    
    End Sub
End Class

Комментарии

Список распространенных задач ввода-вывода см. в разделе Распространенные задачи ввода-вывода.

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

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

Write(Byte)

Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs

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

public:
 virtual void Write(System::Byte value);
public virtual void Write(byte value);
abstract member Write : byte -> unit
override this.Write : byte -> unit
Public Overridable Sub Write (value As Byte)

Параметры

value
Byte

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

Исключения

Возникает ошибка ввода-вывода.

Поток закрыт.

Примеры

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

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        int i = 0;

        // Create random data to write to the stream.
        byte[] writeArray = new byte[1000];
        new Random().NextBytes(writeArray);

        BinaryWriter binWriter = new BinaryWriter(new MemoryStream());
        BinaryReader binReader =
            new BinaryReader(binWriter.BaseStream);

        try
        {
            // Write the data to the stream.
            Console.WriteLine("Writing the data.");
            for(i = 0; i < writeArray.Length; i++)
            {
                binWriter.Write(writeArray[i]);
            }

            // Set the stream position to the beginning of the stream.
            binReader.BaseStream.Position = 0;

            // Read and verify the data from the stream.
            for(i = 0; i < writeArray.Length; i++)
            {
                if(binReader.ReadByte() != writeArray[i])
                {
                    Console.WriteLine("Error writing the data.");
                    return;
                }
            }
            Console.WriteLine("The data was written and verified.");
        }

        // Catch the EndOfStreamException and write an error message.
        catch(EndOfStreamException e)
        {
            Console.WriteLine("Error writing the data.\n{0}",
                e.GetType().Name);
        }
    }
}
open System
open System.IO

// Create random data to write to the stream.
let writeArray = Array.zeroCreate<byte> 1000
Random().NextBytes writeArray

let binWriter = new BinaryWriter(new MemoryStream())
let binReader = new BinaryReader(binWriter.BaseStream)

try
    // Write the data to the stream.
    printfn "Writing the data."
    for i = 0 to writeArray.Length - 1 do
        binWriter.Write writeArray[i]

    // Set the stream position to the beginning of the stream.
    binReader.BaseStream.Position <- 0

    let mutable failed = false
    // Read and verify the data from the stream.
    for i = 0 to writeArray.Length - 1 do
        if binReader.ReadByte() <> writeArray[i] then
            printfn "Error writing the data."
            failed <- true
    if not failed then
        printfn "The data was written and verified."

// Catch the EndOfStreamException and write an error message.
with :? EndOfStreamException as e ->
    printfn $"Error writing the data.\n{e.GetType().Name}"
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()
    
        Dim i As Integer = 0

        ' Create random data to write to the stream.
        Dim writeArray(1000) As Byte
        Dim randomGenerator As New Random()
        randomGenerator.NextBytes(writeArray)

        Dim binWriter As New BinaryWriter(New MemoryStream())
        Dim binReader As New BinaryReader(binWriter.BaseStream)

        Try
        
            ' Write the data to the stream.
            Console.WriteLine("Writing the data.")
            For i = 0 To writeArray.Length - 1
                binWriter.Write(writeArray(i))
            Next i

            ' Set the stream position to the beginning of the stream.
            binReader.BaseStream.Position = 0

            ' Read and verify the data from the stream.
            For i = 0 To writeArray.Length - 1
                If binReader.ReadByte() <> writeArray(i) Then
                    Console.WriteLine("Error writing the data.")
                    Return
                End If
            Next i
            Console.WriteLine("The data was written and verified.")

        ' Catch the EndOfStreamException and write an error message.
        Catch ex As EndOfStreamException
            Console.WriteLine("Error writing the data: {0}", _
                ex.GetType().Name)
        End Try
    
    End Sub
End Class

Комментарии

Из-за конфликтов форматирования данных этот метод со следующими кодировками не рекомендуется:

  • UTF-7

  • ISO-2022-JP

  • ISCII

Список распространенных задач ввода-вывода см. в разделе Распространенные задачи ввода-вывода.

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

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

Write(Boolean)

Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs

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

public:
 virtual void Write(bool value);
public virtual void Write(bool value);
abstract member Write : bool -> unit
override this.Write : bool -> unit
Public Overridable Sub Write (value As Boolean)

Параметры

value
Boolean

Значение Boolean для записи (0 или 1).

Исключения

Возникает ошибка ввода-вывода.

Поток закрыт.

Примеры

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

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

Комментарии

Список распространенных задач ввода-вывода см. в разделе Распространенные задачи ввода-вывода.

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

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

Write(Int32)

Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs
Исходный код:
BinaryWriter.cs

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

public:
 virtual void Write(int value);
public virtual void Write(int value);
abstract member Write : int -> unit
override this.Write : int -> unit
Public Overridable Sub Write (value As Integer)

Параметры

value
Int32

Целое число с четырьмя байтами со знаком для записи.

Исключения

Возникает ошибка ввода-вывода.

Поток закрыт.

Примеры

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

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 сохраняет этот тип данных в малом формате эндиана.

Список распространенных задач ввода-вывода см. в разделе Распространенные задачи ввода-вывода.

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

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