java - 尝试列出共享文件夹中的所有文件时连接重置

标签 java samba smb ntlm-authentication

我正在尝试使用 SmbFileNtlmPasswordAuthentication 递归检查公司共享文件夹中的特定文件。

由于我对 Java 不太了解,所以我遵循了在互联网上找到的示例,但每当我尝试执行 root.listFiles() 时,我总是收到以下错误:

jcifs.smb.SmbException: Failed to connect: foldername/xx.xx.xx.xxx
jcifs.util.transport.TransportException
java.net.SocketException: Connection reset


我确实拥有共享文件夹的访问权限,因此我最初的想法是我的代码中缺少某些内容,而是身份验证或代理错误。我使用以下格式的网址:smb://foldername/something/somethingelse/anothersomething/

我的代码:

    public static Boolean checkDiretory(String location, String docName){
        Boolean result = false;
        try {
            NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("", Consts.username, Consts.password);
            SmbFile root = new SmbFile(location, auth);
            List<SmbFile> files = Arrays.asList(root.listFiles());
            for(SmbFile file : files){
                if(file.isDirectory()){
                    result = checkDiretory(file.getPath(), docName);
                    if(result)
                        return result;
                }
                else{
                    if(file.exists() && file.getName().contains(docName)){
                        return true;
                    }else{
                        result = false;
                    }
                }
            }
        } catch (SmbException e) {
            e.printStackTrace();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
        return result;
    }

最佳答案

就像 Eliad Cohen 建议的那样,您可能必须更改为 SMBJ由于 jcifs 中的 SMBv2 不兼容。

我发现了类似的问题here这可能会帮助您解决这个问题。

请记住,主机只是您的路径!

祝你编码愉快!

关于java - 尝试列出共享文件夹中的所有文件时连接重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58305037/

相关文章:

java - 递归是如何工作的

java - Web 服务客户端/消费者 - 浏览器或 Webstart/JNLP 或 Swing

java - Smb版本2升级问题

java - 多线程中的实例变量行为

java - 使用eclipse 或netbeans 进行开发时,是否使用phpmyadmin 来管理mysql?

Docker Alpine Samba 无法启动

windows - 指向 Samba 共享目录的 HTML 链接,适用于 Internet Explorer 7/8

linux - Samba 给出 "Function not implemented"错误

java - 使用java从经过身份验证的网络打开文件夹