我需要在〜/ .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也不起作用。
我该怎么办?
答案 0 :(得分:58)
~
符号是shell的东西。阅读shell expansion。
Java不理解这种表示法。要获取主目录,请使用密钥user.home
获取system property:
String home = System.getProperty("user.home");
File f = new File(home + "/.config/gfgd.gfgdf");
(作为奖励,它也适用于Windows机器; - )
答案 1 :(得分:7)
使用user.home
系统属性。要完全避免操作系统依赖性,您应该让File执行路径解析,如下所示:
f = new File(new File (System.getProperty("user.home"),".config"),"gfgd.gfgdf");
答案 2 :(得分:4)
您应该使用(它也适用于Windows)
,而不是直接使用~
快捷方式
System.getProperty("user.home");
示例:
File f = new File(System.getProperty("user.home") + "/.config/gfgd.gfgdf");
if (!f.exists()) {
f.createNewFile();
}