Acceder a " ~ " (inicio del usuario) desde Java en Linux
Necesito crear un archivo de configuración en ~/.config / myapp.cfg Así que estoy haciendo esto con File
:
File f;
f = new File("~/.config/gfgd.gfgdf");
if(!f.exists()){
f.createNewFile();
}
El problema es, que me dice, ese directorio no existe y algo así.
java.io.IOException: Not such file or directory
at java.io.UnixFileSystem.createFileExclusively(Native Method)
Intenté cambiar la ruta a algo como /home/user y funcionó. Así que me las arreglé para hacer una conclusión, que java no sabe lo que ~/ significa y lo que un punct(.) antes de foldername significa también, porque / home / user/.la configuración no funciona bien.
¿Qué debo hacer?
3 answers
La notación ~
es una cosa de shell. Lea sobre la expansión del shell .
Java no entiende esta notación. Para obtener el directorio home, obtenga la propiedad del sistema con la clave user.home
:
String home = System.getProperty("user.home");
File f = new File(home + "/.config/gfgd.gfgdf");
(Como bono, también funcionará en máquinas windows; -)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-18 18:48:02
Usuario la propiedad del sistema user.home
. Para evitar completamente las dependencias del sistema operativo, debe dejar que File haga la resolución de la ruta, de esta manera:
f = new File(new File (System.getProperty("user.home"),".config"),"gfgd.gfgdf");
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-18 18:43:25
En lugar de usar directamente el atajo ~
, debe usar (también funciona en Windows)
System.getProperty("user.home");
Ejemplo:
File f = new File(System.getProperty("user.home") + "/.config/gfgd.gfgdf");
if (!f.exists()) {
f.createNewFile();
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-18 18:47:19