2014-02-18 55 views
1

我使用System.getenv()來獲取系統環境的值。在Windows變量並取回形式的東西:在java中獲取完整的系統環境路徑

C:\ PROGRA〜1 ...

即;簡式。

是否有可能獲得完整的表格;例如「C:\ PROGRAM FILES ...」

我想對返回的字符串執行搜索,如果我使用完整字符串,會更好。

感謝

格雷厄姆

回答

1

沒有,是的。

不,你不能從「env」屬性對象/地圖中獲取它們。

但是你應該能夠將這些DOS風格的「8.3」文件名轉換爲完整的文件名。

顯然,它就像在包含「8.3」名稱的路徑上調用 File.getCanonicalPath()一樣簡單......如果您在Windows上運行。 ...或者我在某處讀過。顯然這是不正確的。

執行此操作的標準「Microsoft」方法是使用Win32 std庫中的Win32::GetLongPathName(PATHNAME)。我無法在Java中找到任何東西,因此您可能需要使用JNI/JNA。

另一種選擇是踩任何將8.3路徑放入Windows環境變量的路徑。

+0

只需查看File.getCanonicalPath()的javadoc,其中指出「規範形式的精確定義是依賴於系統的。」。測試它我仍然得到短名稱。 – user25029