Я пытаюсь написать небольшое электронное приложение, которое синхронизирует структуру каталогов определенной папки с Firebase, игнорируя фактическое содержимое.И изо всех сил пытаюсь разработать стратегию с низким значением ovrhead, когда пользователь переименовывает, удаляет или перемещает дочерние элементы.
Я собираюсь использовать что-то подобное для схемы
contenst = {
f1 : {
name : 'Folder 1',
type : 'dir',
parent : null
},
f2 : {
name : 'cat.jpg',
type : 'file',
parent : 'f1'
},
f3 : {
name : 'Subfolder a',
type : 'dir',
parent : 'f1'
},
f4 : {
name : 'dog.jpg',
type : 'file',
parent : 'f3'
}
}
Это приведенная выше структура каталоговв простом виде.
+-- Folder1
|-- cat.jpg
+-- Subfoler_a
|--dog.jpg
Теперь при запуске приложения каждый раз мне приходится повторно синхронизировать структуру каталогов, сохраняя использование полосы пропускания как можно ниже.
Конечно, я мог бы простопрочитайте весь каталог и перезапишите серверный каталог, но это будет довольно дорого, если есть тысячи файлов.
Я не могу использовать какой-либо наблюдатель за файлами, потому что он не будет работать, если приложение закрыто.
Одним из решений является загрузка сохраненного снимка сервера и вычисление различий с локальной структурой.Это снова означает загрузку всего дерева.
Есть ли лучшее решение для этого.
Как видно из названия вопроса, мне нужно только синхронизировать структуру.Содержимое файла не имеет значения.