使用java连接到windows中的共享文件夹

Posted

技术标签:

【中文标题】使用java连接到windows中的共享文件夹【英文标题】:connecting to shared folder in windows with java 【发布时间】:2011-01-11 10:11:40 【问题描述】:

我需要通过java连接到远程windows机器上的共享文件夹,我将域身份验证(用户名和密码)放在代码中,这是我的代码

 File file = new File("\\\\theRemoteIP\\webapps");   
    File[] files = file.listFiles();  
    System.out.println("access done");  

    for (int i = 0; i < files.length; i++)  
      
        String name = files[i].getName();  
        System.out.println(name);  
      

谢谢

【问题讨论】:

在 Oracle Java 8 中这可以正常工作。 【参考方案1】:

如果您正在访问打开的共享文件夹(即用户名或密码未知或不需要),那么您可以按照以下代码:

String path="smb://172.16.0.11/";

SmbFile smbFile = new SmbFile(path);
String a[]=smbFile.list();
for(int i=0;i<a.length;i++)

    System.out.println(a[i]);

【讨论】:

【参考方案2】:

您应该使用来自JCIFS 的SmbFile 和NtlmPasswordAuthentication。这是一段简单的代码,向您展示如何操作:

String url = "smb://yourhost/yourpath/";
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(null, "user", "password");
SmbFile dir = new SmbFile(url, auth);
for (SmbFile f : dir.listFiles())

    System.out.println(f.getName());

【讨论】:

NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(null, "user", "password");那么“用户”、“密码”是域认证权吗? 就是这样。有关更多详细信息,请参阅 javadoc(在答案中链接)。 如果您使用的是 UNC path,请确保有两个额外的正斜杠以表明它是 UNC 路径。例如smb:////11.1.2.10/myFoldersmb:////myShare/myFolder

以上是关于使用java连接到windows中的共享文件夹的主要内容,如果未能解决你的问题,请参考以下文章

将SQL Server连接到Windows共享文件夹

无法连接到 Windows 共享

win10远程连接linux samba,如何从Win10连接到Linux Samba共享

Win10提示“因为文件共享不安全,所以你不能连接到文件共享”如何处理

从 Windows 10 上的网络共享运行的应用程序无法连接到 SQL Server

WIN7,共享打印机。提示“WINDOWS无法连接到打印机。操作失败,错误为0x000006b5