簡體   English   中英

Android中基於文件的文檔存儲

[英]File-based Document Storage in android

我處於android的筆記記錄應用程序的早期階段,希望有人可以為我提供一個用於存儲筆記數據的不錯的解決方案。

理想情況下,我正在尋找一種解決方案,其中:

  • 每個便箋文檔都是一個單獨的文件(用於保管箱同步)
  • 一個便條可以由多頁組成
  • 筆記頁面可以包含二進制數據(例如圖像)
  • 可以加載單個頁面,而不必將整個文檔解析到內存中
  • 線程安全:可以同時進行多次讀/寫。

XML已經用完(至少對於整個文件而言),因為我沒有一次提取單個頁面的好方法。 我考慮過使用zip文件,但是(尤其是在壓縮時)我認為它們也會卡住整個文件的加載。

似乎應該有一個Java庫可以執行此操作,但是我的google-fu讓我失敗了。 我能想到的唯一其他選擇是為每個音符創建一個單獨的sqlite數據庫。

有人知道這個問題有好的解決方案嗎? 謝謝!

似乎關系數據庫將在這里工作。 您只需要稍微熟悉一下架構即可。

也許制作一個Pages表,其中每個頁面都包括它所屬的文檔的字段和文檔中其順序的字段。 頁面還可以具有一個二進制數據字段,該字段可能包含在另一個表中。 如果文檔本身包含其他數據,也許您也有一個文檔表。

我沒有在Android設備上使用SQLite事務,但是這似乎是解決線程安全的好方法。

我建議使用SQLite來存儲文檔。 最終,比每次訪問筆記時嘗試處理文件I / O都容易。 然后,當有人要上傳到保管箱時,您可以即時生成文件並上傳。 至少要有一個Notes表和一個pages表才有意義。 這樣,您可以分別加載每個頁面,並且無論如何,便箋只是頁面的集合。 此外,您可以將圖像作為BLOBS存儲在特定頁面的數據庫中。 基本上,如果您只希望每頁一種類型的內容,那么在pages表中將具有id列和content列之類的內容。 另外,如果您想支持更復雜的內容(例如多種類型的內容),則需要使頁面成為其他內容的集合,例如“實體”。

IMO,關系數據庫將是滿足您從特定頁面讀取要求而不必加載整個文件的最簡單方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM