推荐答案
// www.javascriptcn.com code example
using System;
using System.IO;
class Program
{
static void Main()
{
string filePath = "example.txt";
// 使用 FileStream 创建文件并写入数据
using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
{
byte[] data = System.Text.Encoding.UTF8.GetBytes("Hello, FileStream!");
fs.Write(data, 0, data.Length);
}
// 使用 StreamReader 读取文件内容
using (StreamReader sr = new StreamReader(filePath))
{
string content = sr.ReadToEnd();
Console.WriteLine("StreamReader 读取的内容: " + content);
}
// 使用 StreamWriter 追加内容到文件
using (StreamWriter sw = new StreamWriter(filePath, true))
{
sw.WriteLine("Hello, StreamWriter!");
}
// 再次使用 StreamReader 读取追加后的内容
using (StreamReader sr = new StreamReader(filePath))
{
string content = sr.ReadToEnd();
Console.WriteLine("追加后 StreamReader 读取的内容: " + content);
}
}
}本题详细解读
FileStream 的用法
FileStream 是用于文件读写的底层类,提供了对文件的字节级操作。它允许你以字节为单位读取或写入文件,并且可以控制文件的打开模式、访问权限等。
- FileMode: 指定文件的打开方式,如
Create、Open、Append等。 - FileAccess: 指定文件的访问权限,如
Read、Write、ReadWrite等。
在示例中,我们使用 FileStream 创建了一个文件,并将字符串 "Hello, FileStream!" 写入文件。
StreamReader 的用法
StreamReader 是一个用于读取文本文件的类,它封装了 FileStream,并提供了更高级的文本读取功能。它可以将字节流转换为字符流,并支持按行读取、读取到末尾等操作。
- ReadToEnd(): 读取从当前位置到文件末尾的所有字符。
- ReadLine(): 读取一行字符。
在示例中,我们使用 StreamReader 读取了文件的内容,并将其输出到控制台。
StreamWriter 的用法
StreamWriter 是一个用于写入文本文件的类,它封装了 FileStream,并提供了更高级的文本写入功能。它可以将字符流转换为字节流,并支持按行写入、追加写入等操作。
- WriteLine(): 写入一行字符,并自动添加换行符。
- Append: 在构造函数中指定
true时,表示以追加模式打开文件。
在示例中,我们使用 StreamWriter 向文件中追加了一行文本 "Hello, StreamWriter!",然后再次使用 StreamReader 读取并输出追加后的内容。
通过这三个类的组合使用,可以实现对文件的灵活读写操作。