Файловое хранилище документов в Android - PullRequest
1 голос
/ 03 апреля 2011

Я нахожусь на ранних стадиях создания заметок для Android и надеюсь, что кто-нибудь подскажет мне хорошее решение для хранения данных заметок.

В идеале, я ищу решение, где:

  • Каждый документ заметки представляет собой отдельный файл (для синхронизации в Dropbox)
  • Записка может состоять из нескольких страниц
  • Страницы заметок могут содержать двоичные данные (например, изображения)
  • Можно загрузить одну страницу, не анализируя весь документ в памяти
  • Потокобезопасность: несколько операций чтения / записи могут происходить одновременно.

XML отсутствует (по крайней мере, для всего файла), поскольку у меня нет хорошего способа извлечь по одной странице за раз. Я подумал об использовании zip-файлов, но (особенно когда они сжаты), я думаю, что они застряли бы и при загрузке всего файла.

Кажется, должна быть библиотека Java, которая делает это, но мой гугл-фу меня подводит. Единственная альтернатива, о которой я могу подумать, - это создать отдельную базу данных sqlite для каждой заметки.

Кто-нибудь знает хорошее решение этой проблемы? Спасибо!

Ответы [ 2 ]

2 голосов
/ 03 апреля 2011

Похоже, что реляционная база данных будет работать здесь.Вам просто нужно немного поэкспериментировать со схемой.

Возможно, создайте таблицу страниц с каждой страницей, включающей, скажем, поле для документа, которому она принадлежит, и поле для его порядка в документе.Страницы могут также иметь поле для двоичных данных, которые могут содержаться в другой таблице.Если в самом документе есть дополнительные данные, возможно, у вас есть таблица для документов.

Я не использовал транзакции SQLite на устройстве Android, но, похоже, это был бы хороший способ решить проблему безопасности потоков.

1 голос
/ 03 апреля 2011

Я бы рекомендовал использовать SQLite для хранения документов.В конечном итоге это будет проще, чем пытаться справиться с файловым вводом-выводом каждый раз, когда вы обращаетесь к заметке.Затем, когда кто-то хочет загрузить его в Dropbox, вы генерируете файл на лету и загружаете его.По крайней мере, было бы целесообразно иметь таблицу Notes и таблицу страниц.Таким образом, вы можете загрузить каждую страницу отдельно, а заметка - это просто набор страниц.Кроме того, вы можете хранить изображения в виде BLOBS в базе данных для конкретной страницы.По сути, если вам нужен только один тип контента на страницу, то в таблице страниц будет что-то вроде столбца идентификатора и столбца контента.В качестве альтернативы, если вы хотите поддерживать что-то более сложное, например, несколько типов контента, вам нужно сделать свои страницы набором чего-то другого, например, «сущностей».быть самым простым способом выполнить ваши требования чтения с определенных страниц без необходимости загрузки всего файла.

...