Как я могу контролировать и синхронизировать коллекцию файлов? - PullRequest
0 голосов
/ 20 июля 2011

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

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

  • Как мне «обновить» мою базу данных, фактически не просматривая каждый файл снова, получая информацию о файле, такую ​​как исполнитель, альбом и т. Д., И сравнивая ее с моей базой данных, чтобы увидеть, нужно ли мне добавить или удалить файл из базы данных?

1 Ответ

0 голосов
/ 20 июля 2011

Вы можете использовать несколько методов.

  1. Сканирование всех каталогов, добавленных пользователем, чтобы увидеть, изменилась ли последняя измененная временная метка.Если он перепроверил файл.Вы можете запустить это в отдельном потоке с низким приоритетом, если хотите.
  2. Когда пользователь нажимает на звуковую дорожку в пользовательском интерфейсе, повторно сканирует файл.Если он не существует, предупредите пользователя и удалите запись.Если она существует, проверьте отметку времени и обновите ее соответствующим образом.
  3. Предоставьте пользователю возможность повторного сканирования всей библиотеки.
  4. Если отметка времени папки, в которой содержатся песни, изменяется, вы можете выполнить ее повторное сканированиевместе с любыми подпапками и соответствующим образом обновите библиотеку.
  5. Если файл все еще существует, вам, вероятно, не нужно удалять его из базы данных.

Проверка метки временифайлы (как созданные, так и измененные), как правило, дают вам хорошее представление о том, какие обновления необходимо вносить в базу данных, если таковые вообще имеются.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...