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

Posted

技术标签:

【中文标题】使用最后一个 smb jcifs-ng jar 复制文件【英文标题】:Copy file using last smb jcifs-ng jar 【发布时间】:2019-10-30 07:19:11 【问题描述】:

尝试从 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>

在 *** 中找到了一些示例,但看起来它们很旧。

其中一部分包括 NtlmPasswordAuthentication(context, DomainIP, DomainUser,DomainPassword) 的使用,它在最后一个 jcifs-ng 包中已被弃用。

别人用

SmbFile smbRemoteFile = new SmbFile(remoteFile, someContext)

编译器报告为未定义

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

【问题讨论】:

【参考方案1】:

工作示例:

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);

【讨论】:

【参考方案2】:

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

NtlmPasswordAuthentication 类替换为 NtlmPasswordAuthenticator

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

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

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

【讨论】:

以上是关于使用最后一个 smb jcifs-ng jar 复制文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JCIFS 和 apache VFS 访问 SMB URL?

如何根据swift 3中的数组选择复选标记?

OpenCV C++中的矩阵复共轭

技术分享和交流-中小企业(SMB)如何设计IDC网络架构?如何管理运维资源和知识?

Java异步调用实现并发上传下载SMB共享文件

复(学)习化学时突然的一个 idea