在 C# 编程中,输入输出(IO)和序列化是两个至关重要的概念,它们为数据的存储、读取以及在不同环境间的传输提供了强大的支持。无论是开发小型应用程序,还是构建复杂的企业级系统,深入理解并熟练运用 IO 和序列化技术都是必不可少的。
一、C# 中的 IO 基础
1、文件流(FileStream)
文件流是 C# 中用于处理文件 IO 的基础类,它提供了一种以字节为单位读写文件的方式。通过 FileStream 类,我们可以打开、读取、写入和关闭文件。
// 创建一个FileStream对象用于写入文件
using (FileStream fs = new FileStream("test.txt", FileMode.Create))
{
string content = "Hello, World!";
byte[] data = Encoding.UTF8.GetBytes(content);
fs.Write(data, 0, data.Length);
}
// 创建一个FileStream对象用于读取文件
using (FileStream fs = new FileStream("test.txt", FileMode.Open))
{
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) > 0)
{
string readContent = Encoding.UTF8.GetString(buffer, 0, bytesRead);
Console.Write(readContent);
}
}
在上述代码中,FileMode.Create表示如果文件不存在则创建新文件,如果存在则覆盖原有内容;FileMode.Open用于打开已有的文件进行读取操作。使用using语句可以确保文件流在使用完毕后被正确释放资源。
2、流读取器和写入器(StreamReader 和 StreamWriter)
虽然 FileStream 提供了字节级别的操作,但在处理文本文件时,StreamReader 和 StreamWriter 更为方便,它们可以直接处理字符串。
// 使用StreamWriter写入文本文件
using (StreamWriter sw = new StreamWriter("test.txt"))
{
sw.WriteLine("This is a line of text.");
sw.WriteLine("Another line.");
}
// 使用StreamReader读取文本文件
using (StreamReader sr = new StreamReader("test.txt"))
{
string line;
while ((line = sr.ReadLine()) !=