我使用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?
任何人都可以请求帮助
答案 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
,这就是为什么你目前只读那么多。