C# Can';用二进制读取器显示正确的结果

C# Can';用二进制读取器显示正确的结果,c#,visual-studio,stream,binaryreader,C#,Visual Studio,Stream,Binaryreader,我使用二进制流生成了两个函数 第一个将数组作为参数,并将数据写入文件。。。代码: public static void BinaryWrite(List<person> People) { string path = @"C:\Users\User\Desktop\filestream.txt"; using (FileStream fs = new FileStream(path, FileMode.Op

我使用二进制流生成了两个函数

第一个将数组作为参数,并将数据写入文件。。。代码:

      public static void BinaryWrite(List<person> People)
        {
            string path = @"C:\Users\User\Desktop\filestream.txt";

            using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write))
            {
                using (BinaryWriter bw = new BinaryWriter(fs))
                {
                    for(int i=0;i<People.Count;i++)
                    {
                        bw.Write(People[i].name);
                        bw.Write(People[i].surname);
                        bw.Write(People[i].age);
                    }

                }

            }
        }
publicstaticvoidbinarywrite(列出人员)
{
字符串路径=@“C:\Users\User\Desktop\filestream.txt”;
使用(FileStream fs=newfilestream(路径,FileMode.OpenOrCreate,FileAccess.Write))
{
使用(BinaryWriter bw=新的BinaryWriter(fs))
{

对于(inti=0;i您应该考虑
BaseStream.Position

using (BinaryReader br = new BinaryReader(fs))
{
    while(br.BaseStream.Position < br.BaseStream.Length)
    {
         Console.WriteLine(br.ReadString());
    }
}
使用(BinaryReader br=新的BinaryReader(fs))
{
while(br.BaseStream.Position
ReadString()
方法要求字符串中有特殊格式,在每次读取的开头加上长度前缀

您可以这样阅读,而不是使用特殊格式:

using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
{
       using (BinaryReader br = new BinaryReader(fs))
       {
            while (br.BaseStream.Position < br.BaseStream.Length)
            {
                 Console.WriteLine((char)br.Read());
            }
        }
}
使用(FileStream fs=newfilestream(路径,FileMode.Open,FileAccess.Read))
{
使用(BinaryReader br=新的BinaryReader(fs))
{
while(br.BaseStream.Position
相同的ExpException仍然得到相同的异常
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
{
       using (BinaryReader br = new BinaryReader(fs))
       {
            while (br.BaseStream.Position < br.BaseStream.Length)
            {
                 Console.WriteLine((char)br.Read());
            }
        }
}