BinaryReader пропущенные значения - PullRequest
0 голосов
/ 19 марта 2011

Я использую 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 элементов, но затем я смотрю на значение счетчика в методе чтения, показанном выше, и говорит мне, что счетчик равен только 134: (

вот автор:

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

Общий размер файла после записи составляет 40 КБ, и когда в режиме отладки view.Data содержит 19000 при сохранении и только 134 при чтении?

Может кто-нибудь, пожалуйста, помогите

1 Ответ

1 голос
/ 19 марта 2011

Вы не записываете счетчик, он должен быть таким, чтобы он соответствовал вашему коду чтения:

                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, поэтому вы в настоящее время читаете только столько.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...