2010-11-17 7 views
3

Donc, j'ai un problème étrange avec Java. Je lis un fichier d'écriture, donc le chemin est important pour moi. Je voudrais que tous les fichiers soient écrits et lus à partir du chemin relatif (c'est-à-dire dans le dossier avec le reste de ma classe et les fichiers java).Comment utiliser le chemin relatif au lieu du chemin absolu?

J'écrire des fichiers comme ceci:

FileWriter fw = new FileWriter(outfile,true); 
fw.write(data); 
fw.close(); 

où outfile est quelque chose comme « out.txt » (à savoir le nom du fichier que nous voulons que la sortie pour aller dans).

Le problème est que le fichier est créé en /home/me/ au lieu du chemin de mes autres fichiers.

Est-ce que je fais quelque chose de mal? Ou comment puis-je obtenir les fichiers stockés dans le répertoire relatif?

+3

relative * à ce que *? –

+1

Heure? http://en.wikipedia.org/wiki/Special_relativity –

+0

Peut-être que le parent est le mauvais terme. Je veux dire dans mon répertoire de travail (c'est-à-dire où les fichiers ont été construits, où ils sont exécutés à partir de etc.) – Blackbinary

Répondre

4
FileWriter fw = new FileWriter("./" + outfile,true); 

ou

FileWriter fw = new FileWriter("~/" + outfile,true); 

J'essayer. Java va enregistrer les fichiers relatifs au répertoire de travail en cours par l'intermédiaire de

+0

Celui-ci fonctionne pour moi: FileWriter fw = new FileWriter ("./" + outfile, true); –

3

Êtes-vous dans votre répertoire personnel lorsque vous exécutez le programme?

Si vous voulez toujours sauvegarder les fichiers relatifs à l'emplacement des fichiers Java et pas le répertoire de travail actuel, vous devez trouver ce répertoire et le préfixer pour obtenir un chemin absolu.

+0

Je suppose que c'était le problème. Je compilais tous mes fichiers par le dossier (donc j'étais dans mon répertoire personnel au lieu d'une étape dans le dossier), et j'ai utilisé le paquet.AClass pour l'exécuter. Donc je suppose que cela répond à ça. Merci. – Blackbinary

0

définissez la propriété user.dir sur la ligne de commande, ou tout simplement courir à partir du répertoire tout Wnt d'être par rapport à (par cd-ing)

4

Le répertoire de travail est l'endroit où vous exécutez le programme à partir à savoir où vous appelez java YourClass, donc quand vous voulez écrire des fichiers par rapport à la classe qui est en cours d'exécution, vous devez connaître le répertoire courant et ajouter le chemin relatif à partir de là, par exemple

Donc, si vous avez une classe test.YourClass et que vous exécutez l'application à partir de la racine source-à-dire

java test.YourClass

vous pouvez trouver le chemin absolu du répertoire de votre fichier de classe est de la propriété du système user.dir et le nom du package classes comme suit:

public class YourClass { 

public void printPath() { 
    String path = String.format("%s/%s", System.getProperty("user.dir"), this.getClass().getPackage().getName().replace(".", "/")); 
    System.out.println(path); 
} 

}

Questions connexes