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 接口。 在使用完类型后,您应直接或间接释放类型。 若要直接释放类型,请在 try/catch 块中调用其 Dispose 方法。 若要间接释放类型,请使用 using(在 C# 中)或 Using(在 Visual Basic 中)等语言构造。 有关详细信息,请参阅 IDisposable 接口主题中的“使用实现 IDisposable 的对象”一节。

派生类可以重写此类的方法,以提供唯一的字符编码。

构造函数

BinaryWriter()

初始化写入流的 BinaryWriter 类的新实例。

BinaryWriter(Stream)

基于所指定的流和特定的 UTF-8 编码,初始化 BinaryWriter 类的新实例。

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)

将一个无符号字节写入当前流,并将流的位置提升 1 个字节。

Write(Byte[])

将字节数组写入基础流。

Write(Byte[], Int32, Int32)

将字节数组区域写入当前流。

Write(Char)

将 Unicode 字符写入当前流,并根据所使用的 Encoding 和向流中写入的特定字符,提升流的当前位置。

Write(Char[])

将字符数组写入当前流,并根据所使用的 Encoding 和向流中写入的特定字符,提升流的当前位置。

Write(Char[], Int32, Int32)

将字符数组部分写入当前流,并根据所使用的 Encoding(可能还根据向流中写入的特定字符),提升流的当前位置。

Write(Decimal)

将一个十进制值写入当前流,并将流位置提升十六个字节。

Write(Double)

将 8 字节浮点值写入当前流,并将流的位置提升 8 个字节。

Write(Half)

将两字节浮点值写入当前流,并将流位置向前推进两个字节。

Write(Int16)

将 2 字节带符号整数写入当前流,并将流的位置提升 2 个字节。

Write(Int32)

将 4 字节带符号整数写入当前流,并将流的位置提升 4 个字节。

Write(Int64)

将 8 字节带符号整数写入当前流,并将流的位置提升 8 个字节。

Write(ReadOnlySpan<Byte>)

将字节范围写入当前流。

Write(ReadOnlySpan<Char>)

将一段字符写入当前流,并根据所使用的 Encoding(可能还根据向流中写入的特定字符),提升流的当前位置。

Write(SByte)

将一个带符号字节写入当前流,并将流的位置提升 1 个字节。

Write(Single)

将 4 字节浮点值写入当前流,并将流的位置提升 4 个字节。

Write(String)

将有长度前缀的字符串按 BinaryWriter 的当前编码写入此流,并根据所使用的编码和写入流的特定字符,提升流的当前位置。

Write(UInt16)

将 2 字节无符号整数写入当前流,并将流的位置提升 2 个字节。

Write(UInt32)

将 4 字节无符号整数写入当前流,并将流的位置提升 4 个字节。

Write(UInt64)

将 8 字节无符号整数写入当前流,并将流的位置提升 8 个字节。

Write7BitEncodedInt(Int32)

以压缩格式写入 32 位整数。

Write7BitEncodedInt64(Int64)

一次写出一个 7 位数字。

显式接口实现

IDisposable.Dispose()

释放由 BinaryWriter 占用的非托管资源,还可以另外再释放托管资源。

扩展方法

ConfigureAwait(IAsyncDisposable, Boolean)

配置如何执行从异步可处置项返回的任务的等待。

适用于

另请参阅