2012-08-06 193 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