在Linux中从Java访问“〜”(用户主页)
我需要在〜/ .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在foldername之前不知道什么是〜/表示什么是punct(。),因为/home/user/.config也不起作用。
我该怎么办?
~
符号是shell的东西。 阅读shell扩展 。
Java不理解这种表示法。 要获取主目录,请使用关键user.home
获取系统属性 :
String home = System.getProperty("user.home"); File f = new File(home + "/.config/gfgd.gfgdf");
(作为奖励,它也适用于Windows机器;-)
用户user.home
系统属性。 要完全避免操作系统依赖性,您应该让File执行路径解析,如下所示:
f = new File(new File (System.getProperty("user.home"),".config"),"gfgd.gfgdf");
而不是直接使用~
快捷方式,你应该使用(它也适用于Windows)
System.getProperty("user.home");
示例:
File f = new File(System.getProperty("user.home") + "/.config/gfgd.gfgdf"); if (!f.exists()) { f.createNewFile(); }