C# IO 无法在流的结尾之外进行读取

无法在流的结尾之外进行读取FileStreamfs=newFileStream("IOtest2.txt",FileMode.Open,FileAccess.Read);... 无法在流的结尾之外进行读取
FileStream fs = new FileStream("IOtest2.txt", FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
for(int i=0;i<fs.Length;i++)
{
Console.Write(br.ReadString());
}
fs.Close();
br.Close();

“System.IO.EndOfStreamException”类型的未经处理的异常在 mscorlib.dll 中发生

其他信息: 无法在流的结尾之外进行读取。
展开
 我来答
刷新①丅5e6
2015-11-28 · TA获得超过4333个赞
知道大有可为答主
回答量:1499
采纳率:64%
帮助的人:596万
展开全部

你可以try...catch捕获这个异常,这个异常是可以不作错误处理的,说明二进制流读到了结尾。


            using (FileStream fs = new FileStream("IOtest2.txt", FileMode.Open, FileAccess.Read))
            {
                using (BinaryReader br = new BinaryReader(fs))
                {
                    Byte[] bytes = br.ReadBytes((Int32)fs.Length);
                    Console.WriteLine(Encoding.Default.GetString(bytes));
                }
            }
VVindJim
2021-08-03
知道答主
回答量:1
采纳率:0%
帮助的人:461
展开全部
问题出在
for(int i=0;i<fs.Length;i++)
{
Console.Write(br.ReadString());
}
里的i++,br.ReadString()从当前流中读取一个字符串。 字符串有长度前缀,一次 7 位地被编码为整数。尝试一下将i++换成i=i+7;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
推荐于2018-03-02
展开全部
你想干什么呢?输出每个字节的大小可以把Console.Write(br.ReadString());改成Console.Write(br.ReadByte()+" ");
更多追问追答
追问
就是把文本里的字符串打印在控制台上
不是输出每个字节的大小
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式