gpt4 book ai didi

c# - 如何在 C# 中使用 StreamReader 从特定位置读取文件?

转载 作者:行者123 更新时间:2023-12-05 06:41:40 24 4
gpt4 key购买 nike

我有一个文本文件,我想从一个特定的文件末尾读取这个文本文件。

我可以通过以下方式做到这一点。

string path = @"C:\abc.txt";
var pp = File.ReadAllLines(path).Skip(1).Take(2);

但我希望仅使用 StreamReader 来完成此操作。

我正在这样做,但没有给出正确的结果。

using (Stream stream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
using (StreamReader streamReader = new StreamReader(stream))
{
var str = streamReader.ReadLine().Skip(1).Take(2);
}
}

我也可以通过以下方式做到这一点。但我想避免 for 循环。

using (Stream stream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
using (StreamReader streamReader = new StreamReader(stream))
{
int count=2;
for (int i = 0; i < count; i++)
{
streamReader.ReadLine();
}
string data = streamReader.ReadLine();
}
}

我的问题一点都不重复,上一个问题是关于读取所有文件,但我的问题是从特定行读取到最后。

最佳答案

您只需要 行 - Skip(1).Take(2) - 为什么不直接读取它们?

  using (StreamReader streamReader = new StreamReader(stream)) {
streamReader.ReadLine(); // skip the first line

// take next two lines
string[] data = new string[] {
streamReader.ReadLine(),
streamReader.ReadLine(),
};

...
}

请注意,您当前使用 StreamReader 的代码等于 Skip(2).Take(1).First()。在一般情况 - Skip(M).Take(N) - 中,您必须使用 for 循环(或其模拟):

   using (StreamReader streamReader = new StreamReader(stream)) {
// Skip M first items
for (int i = 0; i < M; ++i)
streamReader.ReadLine();

string[] data = new string[N];

// Take N next items
for (int i = 0; i < N; ++i)
data[i] = streamReader.ReadLine();
}

关于c# - 如何在 C# 中使用 StreamReader 从特定位置读取文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39851703/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com