使用Jackrabbit库从WebDAV服务器获取所有目录

时间:2018-11-14 07:27:01

标签: java performance webdav jackrabbit

我正在编写一种递归方法,以从WebDAV服务器获取所有目录:

public static void getListFolder(List<String> listFolders, String url) throws Exception {
    HttpPropfind request = new HttpPropfind(url, DavConstants.PROPFIND_ALL_PROP, DavConstants.DEPTH_1);
    try (CloseableHttpResponse response = client.execute(request, context)) {
        MultiStatus multiStatus = request.getResponseBodyAsMultiStatus(response);
        MultiStatusResponse[] responses = multiStatus.getResponses();
        if (responses.length > 1) {
            for (int i = 1; i < responses.length; i++) {
                String href = responses[i].getHref().replace(getRootPath(), "");
                if (href.endsWith("/") && !href.contains("/.")) {
                    listFolders.add(href);
                    getListFolder(listFolders, ROOT_URL + href);
                }
            }
        }
    }
}

但是要花很长时间。 所以我的问题是:有没有更快,更轻松的方法来获取所有目录?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以尝试深度无限,但是您必须为不支持深度无限的服务器做好准备。

另外:当您只对URI感兴趣时,为什么还要使用“ DavConstants.PROPFIND_ALL_PROP”?

FWIW,您还假设响应主体中的排序可能会导致令人惊讶的结果。另外,依靠斜杠可能不是一个好主意。您确实应该使用DAV:resourcetype属性。