BinaryReader缺少值

时间:2011-03-19 17:56:22

标签: c# winforms visual-studio-2010

我使用BinaryReader将二进制文件的元素放入Int16列表中。 但是从二进制文件读回的元素的计数值不正确。 这是读者:

            using (var file = File.OpenRead(openFileName))
            using (var reader = new BinaryReader(file))
            {
                int count = reader.ReadInt16();
                    this.view.Data = new List<Int16>(count);
                for (int i = 0; i < count; i++)
                    this.view.Data.Add(reader.ReadInt16());
            }

我知道当我保存我的二进制文件时,view.Data列表会保留19000个元素,但是我会在上面显示的read方法中查看计数值,它告诉我计数只有134:(

这是写作者:

                    using (var file = File.Create(fileName))
                    using (view.Writer = new BinaryWriter(file))
                    {
                        foreach (Int16 dataItem in view.Data)
                        {
                            view.Writer.Write(dataItem);
                        }
                    }

写入后的文件总大小为40KB,而在调试模式下,view.Data在savign时包含19000,在读取时只包含134?

任何人都可以请求帮助

1 个答案:

答案 0 :(得分:1)

你没有写出计数,它应该像你的阅读代码一样:

                using (var file = File.Create(fileName))
                using (view.Writer = new BinaryWriter(file))
                {
                    Int16 count = (Int16) view.Data.Count;
                    view.Writer.Write(count);
                    foreach (Int16 dataItem in view.Data)
                    {
                        view.Writer.Write(dataItem);
                    }
                }

可能第一个值view.Data[0]的值为134,这就是为什么你目前只读那么多。