在 Linux 中从 Java 访问“~”(用户主页)

2022-09-01 09:20:25

我需要在~/.config/myapp中创建一个配置文件.cfg所以我用:File

File f;
f = new File("~/.config/gfgd.gfgdf");
if(!f.exists()){
    f.createNewFile();
}

问题是,它告诉我,那个目录不存在,就像这样。

java.io.IOException: Not such file or directory
    at java.io.UnixFileSystem.createFileExclusively(Native Method)

我尝试将路径更改为/home/user之类的东西,并且它起作用了。所以我设法得出了一个结论,Java不知道~/是什么意思,在文件夹名称之前的pint(.)也意味着什么,因为/home/user/.config不起作用。

我该怎么办?


答案 1

符号是一个外壳的东西。阅读有关外壳扩展的信息。~

Java不理解这种表示法。要获取主目录,请使用键获取系统属性user.home

String home = System.getProperty("user.home");
File f = new File(home + "/.config/gfgd.gfgdf");

(作为奖励,它也可以在Windows机器上工作;-)


答案 2

使用“系统”属性。要完全避免操作系统依赖性,您应该让 File 执行路径解析,如下所示:user.home

f = new File(new File (System.getProperty("user.home"),".config"),"gfgd.gfgdf");