7
votes

Pourquoi la propriété System User.Dir travaille-t-elle en Java?

Presque tous les articles que j'ai lus m'a dit que vous ne pouvez pas avoir CHDIR B> en Java. La réponse acceptée à Cette question dit que vous ne pouvez pas le faire dans Java.

Cependant, voici certaines des choses que j'ai essayées: p> xxx pré>

Voici une classe d'essai que j'utilise: p>

geo@codebox:~$ pwd
/home/geo
geo@codebox:~$ java Ch
/home/geo/.
/media/.


0 commentaires

3 Réponses :


12
votes

juste parce que nouveau fichier (".") code> donne la réponse souhaitée ne signifie pas que cela fait ce que vous voulez.

Par exemple, essayez: P>

new FileOutputStream("foo.txt").close();


1 commentaires

Je n'ai pas testé ça :). Je me suis arrêté quand j'ai vu que changer l'utilisateur.Dir la propriété est reflétée par la classe de fichiers.



7
votes

Quote:

La propriété utilisateur.dir est définie au démarrage VM pour être le répertoire de travail. Vous ne devez pas changer cette propriété ou la définir sur la ligne de commande. Si vous le faites, vous verrez un comportement incohérent car il existe des lieux dans la mise en œuvre qui suppose que l'utilisateur.dir est le répertoire de travail et qu'il ne change pas pendant la durée de vie du VM.

La discussion est ici


0 commentaires

2
votes

File.getaBsoluteFile () Il suffit de regarder la propriété User.Dir System, qui est une copie du répertoire de travail du processus au démarrage VM.

Un meilleur test peut être de vérifier que le répertoire de travail du processus est en train de changer. . Comment vous pouvez faire cela varie selon la plate-forme, mais sur Linux, vous pouvez à quelque chose comme: xxx

où "18037" est le PID du processus en question. Si vous faites cela, je pense que vous constaterez que le répertoire de travail du processus ne change pas réellement lorsque vous mettez à jour User.Dir.


0 commentaires