gpt4 book ai didi

c# - 我是否需要将流 (C#) 重置回开头?

转载 作者:IT王子 更新时间:2023-10-29 03:57:08 25 4
gpt4 key购买 nike

我不太了解 C# 中的流。现在我有一个流,我将它放入流阅读器并读取它。稍后在其他一些方法中我需要读取流(相同的流对象)但是这次我得到这个错误

System.ArgumentException was unhandled by user code
Message="Stream was not readable."
Source="mscorlib"
StackTrace:
at System.IO.StreamReader..ctor(Stream stream, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize)
at System.IO.StreamReader..ctor(Stream stream)
at ExtractTitle(Stream file) in :line 33
at GrabWebPage(String webPath) in :line 62
at lambda_method(ExecutionScope , ControllerBase , Object[] )
at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClassa.<InvokeActionMethodWithFilters>b__7()
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
InnerException:

所以我在想,也许通过阅读流,它会走到尽头。然后,当我再次尝试读取它时,它位于流的末尾,这就是我收到此错误的原因。

那么有人可以阐明这一点吗?

谢谢

最佳答案

当你读到一个流的最后,特别是 StreamReaderReadToEnd方法,你必须 Seek它回到了开始。这可以像这样完成:

StreamReader sr = new StreamReader(stream);
sr.ReadToEnd();
stream.Seek(0, SeekOrigin.Begin); //StreamReader doesn't have the Seek method, stream does.
sr.ReadToEnd(); // This now works

关于c# - 我是否需要将流 (C#) 重置回开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1746092/

25 4 0