【问题标题】:UNC Path .exists() returns falseUNC 路径 .exists() 返回 false
【发布时间】:2012-08-06 22:27:15
【问题描述】:

为什么这在 java 中返回 false?

new File("\\\\10.10.1.4").exists() 

但是

new File("\\\\10.10.1.4\\dir").exists() 

返回真。

如果我在 Windows 资源管理器中打开第一个地址(没有“目录”),我会看到内容,所以我认为这不是权限问题,因为 Windows 可以看到它就好了

File.listFiles() 也会发生同样的事情。第一个地址返回 null 但第二个返回实际内容

最后如果一切都失败了,有没有其他方法可以测试UNC地址(只是没有目录的ip)是否存在并列出其内容?

【问题讨论】:

    标签: java


    【解决方案1】:

    \\10.10.1.4 是地址,不是共享引用,它不指向已挂载的文件系统。 \\10.10.1.4\dir 指向一个共享点,它是一个挂载的文件系统。

    我想向街道地址发送一封信,但留下门牌号码......它没有可以从中删除的上下文点。这里也是一样。 Java 没有将\\10.10.14 视为File,因此它不存在(来自File 的上下文)

    【讨论】:

    • 那我怎样才能列出10.10.1.4的内容呢?我需要遍历整个树,所以我没有'dir',我需要查看 10.10.1.4 下的所有内容。尾部斜杠也不起作用
    • 另外,我不同意你的类比。你的类比是如果我试图打开“\\10.10.1.”,这是一个不完整的地址。 \\10.10.1.4 是一个完整的、明确的地址,可解析为单个设备。如果 \\10.10.1.4\dir\ 列出了 10.10.1.4 中的 'dir' 的内容,为什么 \\10.10.1.4 没有列出设备共享中根目录的内容?听起来 C:\ 不是有效路径,因为其中有一个目录,所以我应该尝试 C:\dir
    • @Hilikus \\10.10.1.4 它不是根设备,它没有与 File.listRoots 一起列出,它是提供共享点的服务。你可以试试看stackoverflow.com/questions/8480622/shares-under-ip
    • 主机本身不是一个有效的 UNC 路径,尽管为了方便起见,许多应用程序将它们视为某种包含共享的目录。 UNC paths are only valid if they contain a host name and a share name.
    【解决方案2】:

    文件("\\10.10.1.4") 不存在。

    File("\\10.10.1.4\") 可能会。

    浏览器/资源管理器会自动添加反斜杠,这就是它显示内容的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-01
      • 2021-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-23
      相关资源
      最近更新 更多