BinaryWriter — невозможно выполнить поиск 64-битных значений. Параметр, переданный в функцию Seek (int32) Есть ли аналогичный класс для файлов размером более 2 Гб?
Альтернативы BinaryWriter для 64-битных файлов?
Ответы (1)
Обычное решение этой проблемы заключается в поиске FileStream
(которые поддерживают позицию long
) перед созданием BinaryReader
.
person
Cédric Bignon
schedule
27.01.2013
Если файл уже открыт, могу ли я использовать BinaryWriter.BaseStream для изменения позиций? Или это неправильно? По крайней мере текущую позицию я получаю от этого класса (BinaryWriter.BaseStrem.Position). И вообще, нормально ли BinaryWriter пишет за границу 2гб?
- person Mixer; 27.01.2013
Это может сработать, но результат не гарантирован. Из msdn : Использование базовый поток при чтении или использовании BinaryReader может привести к потере и повреждению данных. Например, одни и те же байты могут быть прочитаны более одного раза, байты могут быть пропущены или чтение символов может стать непредсказуемым.
- person Cédric Bignon; 27.01.2013
За исключением того, что он использует
BinaryWriter
, и вы можете избежать проблем с повреждением, вызывая Flush
перед вызовом BaseStream.Seek
.
- person Jim Mischel; 27.01.2013
Seek
для свойстваBaseStream
. - person Jim Mischel   schedule 27.01.2013