2014-02-18 57 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