Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jackrabbit WebDAV同步示例?_Java_Apache_Webdav_Jackrabbit - Fatal编程技术网

Java Jackrabbit WebDAV同步示例?

Java Jackrabbit WebDAV同步示例?,java,apache,webdav,jackrabbit,Java,Apache,Webdav,Jackrabbit,我正在使用该库与使用webdav协议的云存储进行通信。我需要一种方法来列出特定目录中的所有文件,并获取上次修改的属性,但我似乎找不到任何关于此的工作示例 我基本上需要代码将本地目录中的文件与webdav url同步 import java.io.File; import java.io.FileInputStream; import org.apache.commons.httpclient.Credentials; import org.apache.commons.httpclient.H

我正在使用该库与使用webdav协议的云存储进行通信。我需要一种方法来列出特定目录中的所有文件,并获取上次修改的属性,但我似乎找不到任何关于此的工作示例

我基本上需要代码将本地目录中的文件与webdav url同步

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上载到备份文件夹的使用示例:

下面列出了一些可能会有所帮助的不同方法:


请帮帮我,我在这上面挣扎了这么久

查看欧盟门户网站上Krusche和Partner提供的AMES WebDAV客户端代码。它是根据GPL授权的,因此它可能适合您的目的

它对我来说很有用,但要访问例如win32lastdimeter,我需要获取自定义名称空间,例如

private static final Namespace WIN32_NAMESPACE = Namespace.getNamespace("Z2", "urn:schemas-microsoft-com:");
并从属性中检索自定义属性Win32LastModifiedTime

                /* 
                 * Win32LastModifiedTime
                 */
                String win32lastmodifiedtime = null;

                DavProperty<?> Win32LastModifiedTime = properties.get("Win32LastModifiedTime", WIN32_NAMESPACE);            
                if ((Win32LastModifiedTime != null) && (Win32LastModifiedTime.getValue() != null)) win32lastmodifiedtime = Win32LastModifiedTime.getValue().toString();
/*
*Win32LastModifiedTime
*/
字符串win32lastmodifiedtime=null;
DavProperty Win32LastModifiedTime=properties.get(“Win32LastModifiedTime”,WIN32_命名空间);
如果((Win32LastModifiedTime!=null)&&(Win32LastModifiedTime.getValue()!=null))Win32LastModifiedTime=Win32LastModifiedTime.getValue().toString();
                /* 
                 * Win32LastModifiedTime
                 */
                String win32lastmodifiedtime = null;

                DavProperty<?> Win32LastModifiedTime = properties.get("Win32LastModifiedTime", WIN32_NAMESPACE);            
                if ((Win32LastModifiedTime != null) && (Win32LastModifiedTime.getValue() != null)) win32lastmodifiedtime = Win32LastModifiedTime.getValue().toString();