ski*_*ppy 6 java windows filenames name-mangling long-filenames
从Java,我将可执行文件提取到使用File.createTempFile()指定的位置.当我尝试运行我的可执行文件时,我的程序在尝试读取第一行输出时挂起.
我发现如果我尝试从另一个程序运行相同的提取可执行文件,如果我将目录指定为C:\ Documents and Settings\username\Local Settings\Temp\prog.exe,它就可以工作.但是,如果我将目录指定为C:\ DOCUME~1\USERNA~1\LOCALS~1\Temp\prog.exe,我就会挂起.
有没有办法解开我的程序中的波浪号文件名,以便我可以指定一个可以工作的目录名?
(因为我总是喜欢解决语言和API设计问题,Java File.createTempFile()和java.io.tmpdir有没有必要评估错误的文件名?)
Chr*_*ris 10
您可以使用getCanonicalPath()获取扩展的路径.例如:
try
{
  File file = File.createTempFile("abc", null);
  System.out.println(file.getPath());
  System.out.println(file.getCanonicalPath());
}
catch (IOException e) {}
......生产......
Run Code Online (Sandbox Code Playgroud)C:\DOCUME~1\USERNA~1\LOCALS~1\Temp\abc49634.tmp C:\Documents and Settings\username\Local Settings\Temp\abc49634.tmp
我在XP上测试了这个,但是假设它在其他Windows操作系统上的工作方式类似.
请参阅@ raviaw对第二个问题的回答.
| 归档时间: | 
 | 
| 查看次数: | 1332 次 | 
| 最近记录: |