Использование Files.listFolder из API Dropbox 2.0, чтобы не отставать от изменений файлов в папке

Я пытаюсь реализовать «отслеживание изменений в файлах и папках» в Dropbox с помощью DbxClientV2. Мне удалось построить следующее: TreeMap children = new TreeMap(); Результат Files.ListFolderResult;

    String cursor = null;

    while (true) {
        result = client.files.listFolder("/MyDirectory/Reports");
        if (!result.cursor.equals(cursor)) {
            cursor = result.cursor;
            for (Metadata md : result.entries) {
                if (md instanceof DeletedMetadata) {
                    children.remove(md.pathLower);
                } else {
                    children.put(md.pathLower, md);
                }
            }
        }
        if (!result.hasMore) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException ex) {

            }
        }
    }

Мой вопрос: как я могу получить курсор папки «/MyDirectory/Reports» с сервера Dropbox, чтобы проверить, должен ли я обновлять «дети» своего локального репозитория?


person michal    schedule 02.12.2015    source источник


Ответы (1)


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

while (true) {
    if (cursor == null) {
        result = client.files.listFolder("/MyDirectory/Reports");
    } else {
        result = client.files.listFolderContinue(cursor);
    }
    cursor = result.cursor;
    for (Metadata md : result.entries) {
        ...

Если это не поможет, не могли бы вы перефразировать свой вопрос?

person user94559    schedule 02.12.2015