gpt4 book ai didi

java - 如何在 Java 中解开 Windows 文件名?

转载 作者:可可西里 更新时间:2023-11-01 13:18:39 25 4
gpt4 key购买 nike

在 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 是否有任何理由必须评估损坏的文件名?)

最佳答案

您可以使用 getCanonicalPath() 获取扩展路径。例如:

try
{
File file = File.createTempFile("abc", null);
System.out.println(file.getPath());
System.out.println(file.getCanonicalPath());
}
catch (IOException e) {}

... 产生...

C:\DOCUME~1\USERNA~1\LOCALS~1\Temp\abc49634.tmp
C:\Documents and Settings\username\Local Settings\Temp\abc49634.tmp

我在 XP 上对此进行了测试,但假设它在其他 Windows 操作系统上也能类似地工作。

请参阅@raviaw 对您第二个问题的回答。

关于java - 如何在 Java 中解开 Windows 文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2518475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com