如何:对新建的数据文件进行读取和写入How to: Read and write to a newly created data file

System.IO.BinaryWriterSystem.IO.BinaryReader 类用于写入和读取字符串以外的数据。The System.IO.BinaryWriter and System.IO.BinaryReader classes are used for writing and reading data other than character strings. 下面的示例演示如何创建空文件流,向其写入数据并从中读取数据。The following example shows how to create an empty file stream, write data to it, and read data from it.

示例将在当前目录中创建名为 Test.data 的数据文件,也就同时创建了相关的 BinaryWriterBinaryReader 对象,并且 BinaryWriter 对象用于向 Test.data 写入整数 0 到 10,这会将文件指针置于文件末尾。The example creates a data file called Test.data in the current directory, creates the associated BinaryWriter and BinaryReader objects, and uses the BinaryWriter object to write the integers 0 through 10 to Test.data, which leaves the file pointer at the end of the file. BinaryReader 对象将文件指针设置回原始位置并读取指定的内容。The BinaryReader object then sets the file pointer back to the origin and reads out the specified content.

备注

如果当前目录中已存在 Test.data,则会引发 IOException 异常。If Test.data already exists in the current directory, an IOException exception is thrown. 使用文件模型选项 FileMode.Create 而不是 FileMode.CreateNew 以始终创建新文件,而不引发异常。Use the file mode option FileMode.Create rather than FileMode.CreateNew to always create a new file without throwing an exception.

示例Example

using System;
using System.IO;

class MyStream
{
    private const string FILE_NAME = "Test.data";

    public static void Main()
    {
        if (File.Exists(FILE_NAME))
        {
            Console.WriteLine($"{FILE_NAME} already exists!");
            return;
        }

        using (FileStream fs = new FileStream(FILE_NAME, FileMode.CreateNew))
        {
            using (BinaryWriter w = new BinaryWriter(fs))
            {
                for (int i = 0; i < 11; i++)
                {
                    w.Write(i);
                }
            }
        }
        
        using (FileStream fs = new FileStream(FILE_NAME, FileMode.Open, FileAccess.Read))
        {
            using (BinaryReader r = new BinaryReader(fs))
            {
                for (int i = 0; i < 11; i++)
                {
                    Console.WriteLine(r.ReadInt32());
                }
            }
        }
    }
}


// The example creates a file named "Test.data" and writes the integers 0 through 10 to it in binary format.
// It then writes the contents of Test.data to the console with each integer on a separate line.
Imports System.IO

Class MyStream
    Private Const FILE_NAME As String = "Test.data"

    Public Shared Sub Main()
        If File.Exists(FILE_NAME) Then
            Console.WriteLine($"{FILE_NAME} already exists!")
            Return
        End If

        Using fs As New FileStream(FILE_NAME, FileMode.CreateNew)
            Using w As New BinaryWriter(fs)
                For i As Integer = 0 To 10
                    w.Write(i)
                Next
            End Using
        End Using

        Using fs As New FileStream(FILE_NAME, FileMode.Open, FileAccess.Read)
            Using r As New BinaryReader(fs)
                For i As Integer = 0 To 10
                    Console.WriteLine(r.ReadInt32())
                Next
            End Using
        End Using
    End Sub
End Class

' The example creates a file named "Test.data" and writes the integers 0 through 10 to it in binary format.
' It then writes the contents of Test.data to the console with each integer on a separate line.

请参阅See also