C# streamreader
时间: 2024-12-28 20:17:26 浏览: 9
### 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]。
阅读全文