2012-08-06 141 views
3

为什么这个返回false在Java?UNC路径.exists()返回false

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

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

返回true。

如果我打开的第一个地址(没有“目录”)在Windows Explorer中我看到的内容,所以我不认为这是一个权限问题因为窗户可以看到它只是罚款

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

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

回答

3

\\10.10.1.4是一个地址,而不是共享的参考,它不指向一个已安装的文件系统。 \\10.10.1.4\dir指向已安装文件系统的共享点。

我想要写一封信到一个街道地址,但离开房屋号码......它没有一个可以交付的上下文点。这里也是一样。 Java没有看到\\10.10.14File,因此它不存在(从File的上下文中)

+1

如何列出10.10.1.4的内容然后?我需要遍历整个树,所以我只是没有'dir',我需要看10.10.1.4下的所有东西。尾部的斜线不起作用 – Hilikus 2012-08-07 14:01:35

+0

另外,我不认为我同意你的类比。你的比喻是,如果我试图打开“\\ 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 2012-08-07 14:50:04

+1

@Hilikus \\ 10.10.1.4它不是根设备,它没有与File.listRoots一起列出,这是一项提供共享点的服务。您可以尝试查看http://stackoverflow.com/questions/8480622/shares-under-ip – MadProgrammer 2012-08-07 19:34:05

2

文件( “\\ 10.10.1.4”)不存在。

文件( “\\ 10.10.1.4 \”)也许是。

浏览器/资源管理器会自动将反斜杠,这就是为什么它显示的内容。

+0

我试过了斜线并且没有区别 – Hilikus 2012-08-07 13:56:55