使用上一个smb jcifs-ng jar复制文件

时间:2019-06-16 12:14:09

标签: java smb jcifs

尝试从jcifs迁移到jcifs-ng(最新的jar jcifs-ng-2.1.2.jar)以将文件复制到远程文件或从远程文件复制文件。 我的代码使用旧的jcifs:

    System.setProperty("jcifs.smb.client.responseTimeout", "10000");
    System.setProperty("jcifs.smb.client.soTimeout", "2000");
    if (winsIPList.trim().equals("")) {
        System.setProperty("jcifs.smb.client.dfs.disabled", "true");             
    } else {
       System.setProperty("jcifs.smb.client.dfs.disabled", "false");
       System.setProperty("jcifs.netbios.wins", winsIPList.trim());
       System.setProperty("resolveOrder", "DNS");
    }
    NtlmPasswordAuthentication auth = new 
    NtlmPasswordAuthentication(filesrvDomainIP, filesrvDomainUser,
                    filesrvDomainPassword);
    smbRemoteFile = new SmbFile("smb:" + remoteFile.replace("\\", "/"), auth);
    <here the code to copy file>

在stackoverflow中找不到几个示例,但是看起来它们很旧。

其中一部分包括使用NtlmPasswordAuthentication(上下文,DomainIP,DomainUser,DomainPassword),该方法在最后一个jcifs-ng软件包中已弃用。

其他人使用

SmbFile smbRemoteFile = new SmbFile(remoteFile, someContext)

报告编译器未定义

有人可以提供一个可行的例子吗?

2 个答案:

答案 0 :(得分:0)

根据此问题:jcifs-ng Issue #36: Chicken/egg relationship between CIFSContext and credentials

NtlmPasswordAuthenticationNtlmPasswordAuthenticator取代。

因此,您可以将NtlmPasswordAuthentication的用法替换为:

NtlmPasswordAuthenticator auth = new NtlmPasswordAuthenticator(domain, username, password)

此外,this answer可能会有所帮助。

答案 1 :(得分:0)

工作示例:

BaseContext baseCxt = null;
Properties jcifsProperties  = new Properties();
jcifsProperties.setProperty("jcifs.smb.client.enableSMB2", "true");
jcifsProperties.setProperty("jcifs.smb.client.dfs.disabled","true");
Configuration config = new PropertyConfiguration(jcifsProperties);
baseCxt = new BaseContext(config);
auth = baseCxt.withCredentials(new NtlmPasswordAuthenticator(DomainIP, DomainUser,
                    DomainPassword));
SmbFile smbRemoteFile = new SmbFile("smb:" + remoteFile.replace("\\", "/"), auth);