C#文件操作详解:FileStream与StreamReader/StreamWriter

需积分: 14 6 下载量 122 浏览量 更新于2024-09-11 收藏 497KB PDF 举报
"C#文件读写操作主要涉及FileStream、StreamReader和StreamWriter类,这些类用于处理文本和二进制文件的读写。以下是关于这些主题的详细说明: 1. **FileStream读取数据** - `FileStream`是.NET Framework提供的基础文件访问类,它可以处理任何类型的文件数据,包括文本和二进制文件。它以原始字节形式进行读写,这使得它适用于处理非文本文件如音频、视频或图片。 - 在使用`FileStream`读取数据时,通常需要创建一个字节数组来存储读取到的数据,然后使用`Read`方法读取文件内容。例如,`afile.Read(bydate, 0, 20000)`会读取文件中的20000个字节到`bydate`数组中。 - 如果要从字节数组转换为字符串,可以使用`Decoder`类,它属于`System.Text`命名空间,能将字节序列解码为字符序列。 2. **FileStream写入数据** - 写入数据同样通过`FileStream`完成,使用`Write`方法将字节数组写入文件。在写入之前,可能需要先创建或打开文件,并确保正确的文件模式(如`FileMode.Create`或`FileMode.Append`)。 - 示例代码可能如下: ```csharp using (FileStream afile = new FileStream("output.txt", FileMode.Create)) { afile.Write(bydate, 0, bydate.Length); } ``` 3. **StreamReader对象** - `StreamReader`是专为读取文本文件设计的类,它可以从流中读取字符并将其转换为字符串。使用`ReadLine`或`Read`方法可以方便地读取文本文件的内容。 - 例如: ```csharp using (StreamReader reader = new StreamReader("input.txt")) { string line; while ((line = reader.ReadLine()) != null) { Console.WriteLine(line); } } ``` - 使用`StreamReader`简化了对文本文件的操作,因为它们会自动处理字符编码。 4. **StreamWriter对象** - `StreamWriter`与`StreamReader`相对,用于向文本文件写入字符串。它可以将字符串或字符数组写入流,非常适合处理文本输出。 - 示例: ```csharp using (StreamWriter writer = new StreamWriter("output.txt")) { writer.WriteLine("Hello, World!"); } ``` - `StreamWriter`也可以处理字符编码,如UTF-8,默认情况下使用系统默认的编码。 5. **二进制文件的读写** - 当处理二进制文件时,如图片或音频文件,通常直接使用`FileStream`,因为它允许精确控制字节级别的读写,不进行任何字符编码转换。 在进行文件操作时,要特别注意异常处理,尤其是可能出现的`IOException`。确保在可能出现错误的地方使用`try-catch`块,并适当地处理错误,例如显示错误信息或记录日志。同时,推荐使用`using`语句来确保资源在使用后得到妥善关闭,防止资源泄露。 C#提供了丰富的API来处理文件读写,`FileStream`适合处理任何类型的数据,而`StreamReader`和`StreamWriter`则简化了文本文件的读写。选择合适的类取决于你的具体需求和文件类型。