filestream和streamreader
时间: 2024-04-27 08:22:25 浏览: 125
FileStream 和 StreamReader 都是 C# 中用于读取文件的类。其中 FileStream 是用于读取二进制文件的,例如图片、视频等,而 StreamReader 则是用于读取文本文件的。
FileStream 类继承自 Stream 类,可以用于读写文件或其他数据。可用于打开文件流以进行读写、复制、移动和删除文件等操作。FileStream 类中提供了各种读写方法,例如 Read、Write、Seek 等。
StreamReader 类则提供了一些方法来读取文本文件的内容,例如 ReadLine、ReadToEnd 等。它可以读取各种不同编码的文本文件,例如 ASCII、UTF-8 等。
总的来说,FileStream 适用于读取二进制文件,而 StreamReader 适用于读取文本文件。但它们都是 C# 中非常常用的文件读取类。
相关问题
StreamReader
StreamReader is a .NET class that provides a way to read characters from a stream in a specific encoding. It is used to read text data from sources such as files, network connections, and memory streams. The StreamReader class can be used to read text data in a variety of encodings, including ASCII, UTF-8, and Unicode. It also provides methods for reading data in specific formats, such as lines or words. The StreamReader class is often used in conjunction with other .NET classes, such as the FileStream and NetworkStream classes, to read data from external sources.
C# streamreader
### C# 中 `StreamReader` 的使用方法
#### 通过 `FileStream` 创建并读取文件中的单行数据
在 C# 中,可以通过创建 `FileStream` 对象来打开指定路径下的文件,并利用此流对象实例化 `StreamReader` 来执行具体的读操作。下面是一个简单的例子展示如何仅获取文件的第一行内容:
```csharp
using System;
using System.IO;
public class StreamReaderExample {
public static void Main() {
// 打开或创建文件 "e:\output.txt"
FileStream fileStream = new FileStream(@"e:\output.txt", FileMode.OpenOrCreate);
try {
using (StreamReader streamReader = new StreamReader(fileStream)) {
// 尝试读取一行文本
string firstLine = streamReader.ReadLine();
if (!string.IsNullOrEmpty(firstLine))
Console.WriteLine($"First Line: {firstLine}");
else
Console.WriteLine("The file is empty.");
}
} catch (Exception ex) {
Console.WriteLine($"An error occurred: {ex.Message}");
} finally {
// 关闭文件流
fileStream.Close();
}
}
}
```
这段代码展示了基本的异常处理机制以及资源释放的最佳实践[^1]。
#### 遍历整个文件直到结束标志位被触发
对于需要逐行遍历整个文件的情况,则可以采用如下方式实现更高效的循环结构:
```csharp
using System;
using System.IO;
public class FileReader {
public static void ReadAllLines(string filePath) {
// 设置只读模式打开文件
var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
try {
using (var sr = new StreamReader(fs)) {
// 循环直至到达文件结尾
while (!sr.EndOfStream) {
string currentLine = sr.ReadLine();
// 输出当前行的内容到控制台
Console.WriteLine(currentLine);
}
}
} catch (IOException ioEx) {
Console.WriteLine($"IO Exception caught! Message: {ioEx.Message}");
} catch (UnauthorizedAccessException uaEx) {
Console.WriteLine($"Access denied to the specified path. Error message: {uaEx.Message}");
} finally {
// 确保关闭文件流
fs?.Close();
}
}
public static void Main() {
string testFilePath = @"path\to\your\file.txt";
ReadAllLines(testFilePath);
}
}
```
这里不仅实现了完整的错误捕捉逻辑,还特别针对可能发生的访问权限问题进行了单独捕获[^2]。
阅读全文