Примечание: я знаю о недостатках использования BinaryFormatter
в больших файлах. Но это домашнее задание для моего друга:
(.Net Framework 4) Я создал простой класс Person
, который должен быть сериализован и записан в двоичном файле.
- Для вставки, вот как это происходит: Открыть / Создать файл, Найти конец файла, Добавить сериализованный объект
Person
, закрыть файл. Я не хочу сериализовать List<Person>
и писать все сразу.
- Для чтения (на основе параметра
index
): откройте файл, найдите позицию index
(на основе длины объекта), десериализуйте объект на index
, верните объект.
- Удаление: точно так же, как чтение записи в позиции
index
, перейти в индексную позицию, удалить ее, сохранить файл.
Я не уверен, что использование BinaryFormatter
является правильным способом сделать это. например, для вставки я видел такие примеры:
FileStream fs = new FileStream(_fileName, FileMode.Open);
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, person);
fs.Close();
, что приводит к потере всех данных в файле, и файл будет содержать только объект person
. Как я могу последовательно выполнять двоичное чтение / запись / удаление объектов в файле? Моим предположением для вставки было использование другого потока, сериализация объекта в этот поток. записать поток в байтовый массив и использовать этот байтовый массив для записи в конец моего основного файлового потока. Но я не мог придумать подходящий способ для операций вставки / удаления. Какой подход лучше использовать вместо BinaryFormatter
?
Примечание: чтобы быть более понятным, он сказал мне, что учитель хочет, чтобы они вычисляли количество времени для каждой операции.
Спасибо.