Кэширование и чтение файлов в определенном порядке - PullRequest
0 голосов
/ 13 октября 2019

Я создаю приложение, в котором пользователи могут создавать заметки, которые отображаются в сетке. Когда создается заметка, также создается соответствующий текстовый файл. Когда пользователь открывает приложение, оно считывает каталог файлов заметок, получает содержимое каждого файла заметок и затем отображает его в сетке.

enter image description here

Идея состоит в том, чтобы сделать сетку нот переставляемой с помощью перетаскивания.

enter image description here

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

1_note3.txt 2_note7.txt 3_note4.txt 4_note2.txt 5_note6.txt 6_note8.txt 7_note5.txt 8_note1.txt

Это не похоже на хороший подход, так как всякий раз, когда заметки переставляются, мне приходится переименовывать кучу файлов. Например, скажем, пользователь создает новую заметку - которая будет вставлена ​​как первый дочерний элемент сетки для удобства пользователя - все имена файлов должны быть переименованы.

1_note9.txt 2_note3.txt 3_note7.txt 4_note4.txt 5_note2.txt 6_note6.txt 7_note8.txt 8_note5.txt 9_note1.txt

Далее, скажем, пользователь теперь реорганизует заметки с помощьюперемещение первой ноты на четвертую позицию в верхнем ряду. Теперь мне нужно переименовать этот файл и все следующие файлы.

2_note3.txt 3_note7.txt 4_note4.txt 5_note9.txt 6_note2.txt 7_note6.txt 8_note8.txt 9_note5.txt 10_note1.txt

Я также мог бы хранить заказ или расположение в отдельном файле и манипулировать исключительно содержимым этого файла вместо фактических имен файлов.

arrangement.txt

note3.txt
note7.txt
note4.txt
...

Несмотря на то, что это может быть лучше, чем в последнем подходе, оно также не кажется таким уж большим, поскольку все еще существуют дополнительные издержки. Например, когда приложение запускается, мне сначала нужно прочитать этот файл, чтобы получить пользовательское расположение, прежде чем соответствующим образом сортировать файлы.

У кого-нибудь есть опыт реализации чего-то подобного? Есть ли лучший способ сделать это?

1 Ответ

1 голос
/ 14 октября 2019

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

...