是否需要将流(C#)重置回起始位置?

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

用户代码未处理System.ArgumentException
Message=“流不可读。”
Source=“mscorlib”
堆栈跟踪:
在System.IO.StreamReader..ctor(流、编码、布尔检测编码、字节顺序标记、Int32 bufferSize)
at System.IO.StreamReader..ctor(流)
第33行中的提取标题(流文件)
第62行中的抓取网页(字符串网页)
在lambda_方法上(ExecutionScope、ControllerBase、Object[])
位于System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller,Object[]参数)
位于System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext ControllerContext,IDictionary`2参数)
位于System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext ControllerContext,ActionDescriptor ActionDescriptor,IDictionary`2参数)
位于System.Web.Mvc.ControllerActionInvoker&燃气轮机;c__显示类别A。<InvokeActionMethodWithFilters>b_u 7()
位于System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter筛选器、ActionExecutingContext预文本、Func`1 continuation)
内部异常:

所以我在想,也许通过阅读这条小溪,它会走到尽头。然后,当我再次尝试阅读它时,它位于流的末尾,这就是为什么我会出现这个错误

有人能解释一下吗

谢谢

当您将一个流读到底时,特别是使用StreamReaderReadToEnd方法,您必须查找它回到开头。可以这样做:

StreamReader sr=新的StreamReader(流);
高级ReadToEnd();
stream.Seek(0,SeekOrigin.Begin)//StreamReader没有Seek方法,stream有。
高级ReadToEnd();//这现在起作用了

发表评论