gpt4 book ai didi

c# - Stream 对象的 ReadAllLines?

转载 作者:IT王子 更新时间:2023-10-29 03:47:11 28 4
gpt4 key购买 nike

存在 File.ReadAllLines 但不存在 Stream.ReadAllLines

using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Test_Resources.Resources.Accounts.txt"))
using (StreamReader reader = new StreamReader(stream))
{
// Would prefer string[] result = reader.ReadAllLines();
string result = reader.ReadToEnd();
}

有没有办法做到这一点,还是我必须逐行手动循环遍历文件?

最佳答案

您可以编写一个逐行读取的方法,如下所示:

public IEnumerable<string> ReadLines(Func<Stream> streamProvider,
Encoding encoding)
{
using (var stream = streamProvider())
using (var reader = new StreamReader(stream, encoding))
{
string line;
while ((line = reader.ReadLine()) != null)
{
yield return line;
}
}
}

然后称它为:

var lines = ReadLines(() => Assembly.GetExecutingAssembly()
.GetManifestResourceStream(resourceName),
Encoding.UTF8)
.ToList();

Func<>部分是在多次阅读时应对,并避免不必要地打开流。当然,您可以轻松地将该代码包装在一个方法中。

如果您不需要一次将所有内容都存储在内存中,您甚至不需要 ToList ...

关于c# - Stream 对象的 ReadAllLines?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13312906/

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