在C#编程中,二进制读写文件是处理数据的一种高效方式,尤其适用于存储原始字节流或结构化数据,如图像、音频文件、自定义数据格式等。本篇文章将深入探讨C#中二进制文件的读写操作,并通过实例代码来展示其用法。
我们要了解两个主要的类:`System.IO.BinaryReader`和`System.IO.BinaryWriter`。这两个类分别用于读取和写入二进制文件。它们提供了多种方法来处理各种基本数据类型,如整型、浮点型、字符串等。
**1. 使用BinaryWriter写入二进制文件**
`BinaryWriter`类允许我们向流中写入基本数据类型。我们需要创建一个`FileStream`对象来打开或创建文件,然后使用这个流实例化`BinaryWriter`。以下是一个简单的例子:
```csharp
using System;
using System.IO;
public class Program
{
public static void Main()
{
string filePath = "output.bin";
using (FileStream fileStream = new FileStream(filePath, FileMode.Create))
{
using (BinaryWriter binaryWriter = new BinaryWriter(fileStream))
{
// 写入整数
binaryWriter.Write(12345);
// 写入浮点数
binaryWriter.Write(3.14159f);
// 写入字符串(会先写入字符串长度,然后再写入字符)
binaryWriter.Write("Hello, Binary!");
}
}
}
}
```
在这个例子中,我们创建了一个名为“output.bin”的二进制文件,并向其中写入了一个整数、一个浮点数和一个字符串。
**2. 使用BinaryReader读取二进制文件**
读取二进制文件时,我们使用`BinaryReader`类。与`BinaryWriter`类似,我们先打开文件流,然后创建`BinaryReader`实例。以下是读取前面创建的二进制文件的代码:
```csharp
using System;
using System.IO;
public class Program
{
public static void Main()
{
string filePath = "output.bin";
using (FileStream fileStream = new FileStream(filePath, FileMode.Open))
{
using (BinaryReader binaryReader = new BinaryReader(fileStream))
{
// 读取整数
int number = binaryReader.ReadInt32();
Console.WriteLine("Read number: " + number);
// 读取浮点数
float pi = binaryReader.ReadSingle();
Console.WriteLine("Read pi: " + pi);
// 读取字符串
string text = binaryReader.ReadString();
Console.WriteLine("Read text: " + text);
}
}
}
}
```
这段代码将从“output.bin”文件中读取之前写入的数据,并将其打印到控制台。
**注意点:**
1. 在使用`BinaryWriter`写入字符串时,它会自动写入字符串的长度,所以在使用`BinaryReader`读取字符串时,它也会读取这个长度信息。
2. 记得使用`using`语句来确保流和读者/写者在完成操作后被正确关闭和清理。
3. 二进制文件没有明确的文本格式,因此不适用于需要人直接阅读的文本数据。
4. 当读写结构化数据时,确保读取顺序与写入顺序一致,否则可能会出现数据混乱。
5. 对于大文件,可以分块读写以提高性能。
以上就是C#中进行二进制文件读写的基本操作和注意事项。在实际项目中,我们可能需要根据具体需求来调整这些方法,例如处理特定的数据结构或编码规则。熟悉这些基础操作对于处理二进制数据至关重要。
2026-05-17 21:57:41
17KB
2二进制
1