Примеры синхронизации Jackrabbit WebDAV?

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

Мне в основном нужен код для синхронизации файлов из локального каталога с URL-адресом webdav.

import java.io.File;
import java.io.FileInputStream;

import org.apache.commons.httpclient.Credentials;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.methods.InputStreamRequestEntity;
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.jackrabbit.webdav.client.methods.DavMethod;
import org.apache.jackrabbit.webdav.client.methods.MkColMethod;
import org.apache.jackrabbit.webdav.client.methods.PutMethod;

public class WebDavClient
{
    private String resourceUrl;
    private HttpClient client;
    private Credentials credentials;
    private DavMethod method;

    public WebDavClient(String resourceUrl, String username, String password)
            throws Exception
    {
        this.resourceUrl = resourceUrl;
        client = new HttpClient();
        credentials = new UsernamePasswordCredentials(username, password);
        client.getState().setCredentials(AuthScope.ANY, credentials);
    }

    public int upload(String fileToUpload) throws Exception
    {
        method = new PutMethod(getUpdatedWebDavPath(fileToUpload));

        RequestEntity requestEntity = new InputStreamRequestEntity(
                new FileInputStream(fileToUpload));
        ((PutMethod) method).setRequestEntity(requestEntity);

        client.executeMethod(method);

        return method.getStatusCode();
    }

    public int createFolder(String folder) throws Exception
    {
        method = new MkColMethod(getUpdatedWebDavPath(folder));

        client.executeMethod(method);

        return method.getStatusCode();
    }

    private String getUpdatedWebDavPath(String file)
    {
        // Make sure file names do not contain spaces
        return resourceUrl + "/" + new File(file).getName().replace(" ", "");
    }
}

Пример использования для загрузки файла Test.txt в папку Backup:

String myAccountName = "...";
String myPassword = "...";
WebDavClient webdavUploader = new WebDavClient("https:\\\\webdav.hidrive.strato.com\\users\\" + myAccountName + "\\Backup", myAccountName, myPassword);

webdavUploader.upload("C:\\Users\\Username\\Desktop\\Test.txt");

Вот список различных DavMethods, которые могут быть полезны: http://jackrabbit.apache.org/api/1.6/org/apache/jackrabbit/webdav/client/methods/package-summary.html

Пожалуйста, помогите, я так долго боролся с этим!


person BullyWiiPlaza    schedule 15.09.2014    source источник


Ответы (1)