Консольное приложение, которое работает с файлом-БД. Путь к файлу задаётся системным свойством System.getProperty("db.file")
. Из командной строки надо запускать приложение так: java -Ddb.file=/home/student/db.dat ru.fizteh.fivt.students.test.DbMain
.
Приложение должно работать как в интерактивном режиме, так и в пакетном (см. задание Shell).
Приложение должно поддерживать следующие команды с фиксированным выводом:
put key value
Если значение новое, то вывод:
new
Если значение затирает существующее:
overwrite
old value
get key
Если значение есть:
found
value
Если значения нет:
not found
remove key
Если значение удалено:
removed
Если значения нет:
not found
list
Выводит список всех ключей или пустую строку, если ничего нет:
key1, key2, kеy3
exit
Данные лежат в бинарном файле следующего формата:
Длина ключа 1, ключ 1, длина значения 1, значение 1,
Длина ключа 2, ключ 2, длина значения 2, значение 2,
...
Форматы длин - целые числа в машинном представлении, 4 байта. Формат ключа и значения - байты, полученные из строки в кодировке UTF-8.
add key value
add ключ значение
В файле должно оказаться (в бинарном виде):
00000008 d0bad0bb d18ed187 00000010
d0b7d0bd d0b0d187 d0b5d0bd d0b8d0b5
00000003 6b657900 00000576 616c7565
Данные лежат в бинарном файле следующего формата:
Ключ 1, \0, смещение значения 1,
Ключ 2, \0, смещение значения 2,
...
Ключ N, \0, смещение значения N,
значение 1, значение 2, ...
Форматы смещений - целые числа в машинном представлении, 4 байта. Формат ключа - байты, полученные из строки в кодировке UTF-8. Оканчивается ключ нулевым символом (\0). Между списком смещений и первым значением нет разрыва.
add key value
add ключ значение
В файле должно оказаться (в бинарном виде):
d0bad0bb d18ed187 00000000 156b6579
00000000 25d0b7d0 bdd0b0d1 87d0b5d0
bdd0b8d0 b576616c 7565