Skip to content

Latest commit

 

History

History
59 lines (34 loc) · 4.16 KB

step07.md

File metadata and controls

59 lines (34 loc) · 4.16 KB

File Cabinet

Шаг 7 - Хранилище на файловой системе

Цель: добавление файловой системы в качестве хранилища данных.

Изменения для каждого нумерованного абзаца должны находиться в отдельном коммите с ясным и понятным описанием.

Выполнение

  1. Переименуйте FileCabinetService в FileCabinetMemoryService. Добавьте новый сервис FileCabinetFilesystemService.

File System Service

Все методы нового сервиса должны выбрасывать NotImplementedException.

Commit "Move FileCabinetService to FileCabinetMemoryService. Add FileCabinetFileSystemService."

  1. Добавьте новый параметр коммандной строки --storage (сокращенная форма -s), который может принимать два значения - "memory" (значение по-умолчанию) и "file". Если задано значение "memory", то должен использоваться FileCabinetMemoryService. Если задано значение "file", то должен использоваться FileCabinetFilesystemService. Должен создаваться с открытым бинарным FileStream с именем файла "cabinet-records.db".

Commit "Add storage command line parameter."

  1. Реализуйте метод FileCabinetFilesystemService.CreateRecord, который должен записывать переданные ему данные в файл данных. Записи должны добавляться в файл последовательно, размер записи должен быть фиксированным.

File Structure

Пример структуры записи в файле:

Offset Data Type Field Size (bytes) Name Description
0 short 2 Status Reserved
2 int32 4 Id Record ID
6 char[] 120 FirstName First name
126 char[] 120 LastName Last name
246 int32 4 Year Date of birth
250 int32 4 Month Date of birth
254 int32 4 Day Date of birth
... ... ... ... ...

Добавьте в таблицу собственные поля.

Commit "Implement CreateRecord for FileCabinetFilesystemService".

  1. Реализуйте метод FileCabinetFileService.GetRecords, который должен возвращать все доступные записи из файла данных. Метод должен установить указатель на начало файла (BOF) и последовательно считывать записи.

Commit "Implement GetRecords for FileCabinetFilesystemService".

  1. Реализуйте метод FileCabinetFileService.GetStat, который должен возвращать количество записей, сохраненных в файле.

Commit "Implement GetStat for FileCabinetFilesystemService".

  1. Реализуйте метод FileCabinetFileService.EditRecord, который должен перезаписывать данные записи. В начале метод должен осуществлять поиск нужной записи, перемещать указатель файла на начало записи, а затем производить запись обновленных данных.

Commit "Implement EditRecord for FileCabinetFilesystemService".

  1. Реализуйте методы FindBy...

Commit "Implement FindBy... for FileCabinetFilesystemService".