gpt4 book ai didi

c# - StreamReader ReadLine 正在修改/不释放 Stream

转载 作者:太空宇宙 更新时间:2023-11-03 13:35:23 30 4
gpt4 key购买 nike

我正在使用 FileHelpers解析上传到 ASP.NET 应用程序的 CSV 文件。

将上传两个不同的 CSV 文件结构(即不同数量的列),因此在我使用要解析的结构模型创建 FileHelpers 引擎之前,我读取文件的第一行如下:

string line = "";

using (StreamReader reader = new StreamReader(file.InputStream))
{
line = reader.ReadLine();
}

int fieldCount = line.Count(l => l == ',');

这行得通,并给出了列数,但它破坏了我想用 file.InputStream 做的任何其他事情:

var engine = new FileHelperEngine<CSVModel>();
CSVModel[] records;
records = (CSVModel[])engine.ReadStream(new StreamReader(file.InputStream),
Int32.MaxValue);
// etc etc

为什么会这样?我试图取消 using 并只是手动关闭() StreamReader 但它没有帮助。

最佳答案

您遇到的问题是因为内置的 Stream 类在它们自身被处置或关闭后会处置底层流。

与直觉相反,如果您仍在使用它,则需要不关闭它,在访问它之前重新打开它,或者如果您想在不止一个地方。

This question有一些解释。

编辑:(在 Jim 的评论之后)

或者,您可以使用构造函数中的参数通知 StreamReader 不要关闭底层流。 ( MSDN Documentation )

关于c# - StreamReader ReadLine 正在修改/不释放 Stream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18873866/

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