Java Dropbox API v2中的全局游标

Java Dropbox API v2中的全局游标,java,cursor,dropbox,delta,Java,Cursor,Dropbox,Delta,我使用dropbox/delta端点跟踪dropbox内部的更改。 更准确地说,下面的代码允许我递归地跟踪“/superfolder”中的更改(我在这里使用的是DbxClientV1): List-listOfResults=new-ArrayList(); 字符串路径=“/superfolder”; 字符串游标=null; while(true){ DbxDelta deltaWithPathPrefix=client.getDeltaWithPathPrefix(游标,路径); cursor

我使用dropbox/delta端点跟踪dropbox内部的更改。 更准确地说,下面的代码允许我递归地跟踪“/superfolder”中的更改(我在这里使用的是DbxClientV1):

List-listOfResults=new-ArrayList();
字符串路径=“/superfolder”;
字符串游标=null;
while(true){
DbxDelta deltaWithPathPrefix=client.getDeltaWithPathPrefix(游标,路径);
cursor=deltaWithPathPrefix.cursor;
if(deltaWithPathPrefix.reset){
System.out.println(“重置!”);
}
for(DbxDelta.Entry:deltaWithPathPrefix.entries){
if(entry.metadata==null){
System.out.println(“删除:“+entry.lcPath”);
添加结果列表(entry.lcPath);
}否则{
System.out.println(“添加或修改:+entry.lcPath”);
}
}
如果(!deltaWithPathPrefix.hasMore){
试一试{
睡眠(1000);
}捕获(中断异常例外){
Logger.getLogger(MainSearchV1.class.getName()).log(Level.SEVERE,null,ex);
}
}
}
现在,我已经切换到DbxClientV2客户端。要跟踪dropbox上的更改,我使用client.files.listFolder()的以下格式:

    TreeMap<String, Metadata> children = new TreeMap<String, Metadata>();
    Files.ListFolderResult result;

    String cursor = null;

    while (true) {
        if (cursor == null) {
            result = client.files.listFolder("/superfolder");
        } else {
            result = client.files.listFolderContinue(cursor);
        }
        cursor = result.cursor;
        for (Metadata md : result.entries) {
            if (md instanceof DeletedMetadata) {
                children.remove(md.pathLower);
                System.out.println("Deleted: " + md.pathLower);
            } else {
                children.put(md.pathLower, md);
                System.out.println("State: " + md.pathLower);
                System.out.println(md.toString());
            }
        }

        if (!result.hasMore) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException ex) {
            }
        }
    }
TreeMap children=newtreemap();
Files.ListFolderResult结果;
字符串游标=null;
while(true){
if(游标==null){
结果=client.files.listFolder(“/superfolder”);
}否则{
结果=client.files.listFolderContinue(游标);
}
cursor=result.cursor;
for(元数据md:result.entries){
if(删除的元数据的md实例){
儿童。移除(md.pathLower);
System.out.println(“删除:“+md.pathLower”);
}否则{
children.put(md.pathLower,md);
System.out.println(“状态:+md.pathLower”);
System.out.println(md.toString());
}
}
如果(!result.hasMore){
试一试{
睡眠(1000);
}捕获(中断异常例外){
}
}
}
遗憾的是,我发现我只能跟踪“超级文件夹”文件夹的更改。
在Dropbox API v2中,有没有一种方法可以获得一个递归跟踪更改的“全局游标”?

Java SDK对几乎所有具有多个可选参数的调用都使用构建器模式。如果我正确理解你的问题,我认为你在寻找这个:

result = client.files.listFolderBuilder("/superfolder")
               .recursive(true)
               .start();

编辑:您询问了“全局”光标。我认为您实际上指的是递归,但如果您真正指的是全局,则可以传递一个空字符串(
“”
)作为表示根的路径。

Java SDK使用生成器模式进行几乎所有具有多个可选参数的调用。如果我正确理解你的问题,我认为你在寻找这个:

result = client.files.listFolderBuilder("/superfolder")
               .recursive(true)
               .start();

编辑:您询问了“全局”光标。我想你实际上是指递归,但如果你真的是指全局,你可以传递一个空字符串(
“”
)作为表示根的路径。

它正在工作!!我在Dropbox API v2文档中找不到它,但事实证明,自从我上次检查它以来,maven版本已经从“2.0-beta-1”升级到了“2.0-beta-3”。谢天谢地,它起作用了!!我在Dropbox API v2文档中找不到它,但事实证明,自从我上次检查它以来,maven版本已经从“2.0-beta-1”升级到了“2.0-beta-3”。谢谢