首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BinaryReader缺少值

BinaryReader缺少值
EN

Stack Overflow用户
提问于 2011-03-20 01:56:22
回答 1查看 294关注 0票数 0

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

代码语言:javascript
复制
            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方法中,我查看了Count值,它告诉我count只有134% :(

下面是写入者:

代码语言:javascript
复制
                    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在存储时包含19000,而在读取时仅包含134KB。

有谁能帮帮忙

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-20 02:18:31

你没有写出计数,它应该是这样的,以匹配你的阅读代码:

代码语言:javascript
复制
                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,这就是为什么你现在只读了那么多。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5363769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档