1
我使用System.getenv()来获取系统环境的值。在Windows变量并取回形式的东西:在java中获取完整的系统环境路径
C:\ PROGRA〜1 ...
即;简式。
是否有可能获得完整的表格;例如“C:\ PROGRAM FILES ...”
我想对返回的字符串执行搜索,如果我使用完整字符串,会更好。
感谢
格雷厄姆
我使用System.getenv()来获取系统环境的值。在Windows变量并取回形式的东西:在java中获取完整的系统环境路径
C:\ PROGRA〜1 ...
即;简式。
是否有可能获得完整的表格;例如“C:\ PROGRAM FILES ...”
我想对返回的字符串执行搜索,如果我使用完整字符串,会更好。
感谢
格雷厄姆
没有,是的。
不,你不能从“env”属性对象/地图中获取它们。
但是你应该能够将这些DOS风格的“8.3”文件名转换为完整的文件名。
显然,它就像在包含“8.3”名称的路径上调用
...或者我在某处读过。显然这是不正确的。File.getCanonicalPath()
一样简单......如果您在Windows上运行。
执行此操作的标准“Microsoft”方法是使用Win32 std库中的Win32::GetLongPathName(PATHNAME)
。我无法在Java中找到任何东西,因此您可能需要使用JNI/JNA。
另一种选择是踩任何将8.3路径放入Windows环境变量的路径。
只需查看File.getCanonicalPath()的javadoc,其中指出“规范形式的精确定义是依赖于系统的。”。测试它我仍然得到短名称。 – user25029