96 votes

Java, lire un fichier depuis le répertoire actuel?

Je veux un programme Java qui lit un nom de fichier spécifié par l'utilisateur à partir du répertoire actuel (le même répertoire que celui où le fichier .class est exécuté).

En d'autres termes, si l'utilisateur spécifie que le nom du fichier est "myFile.txt" et que ce fichier se trouve déjà dans le répertoire en cours:

 reader = new BufferedReader(new FileReader("myFile.txt"));
 

ne marche pas. Pourquoi?

Je l'exécute dans Windows.

93voto

Joonas Pulakka Points 20361

Essayer

 System.getProperty("user.dir")
 

Il retourne le répertoire de travail actuel.

58voto

Laurence Gonsalves Points 50783

Le répertoire courant n'est pas (nécessairement) le répertoire de l' .fichier de classe est dans. C'est le répertoire de travail du processus. (c'est à dire: le répertoire que vous trouviez lorsque vous avez commencé la JVM)

Vous pouvez charger des fichiers dans le même répertoire que le .fichier de classe avec getResourceAsStream(). Que vais vous donner un InputStream qui vous permet de convertir un Lecteur InputStreamReader.

6voto

Joel Westberg Points 1326

Si vous savez que votre fichier vivra où vos classes sont, ce répertoire sera sur votre classpath. Dans ce cas, vous pouvez être sûr que cette solution résoudra votre problème:

 URL path = ClassLoader.getSystemResource("myFile.txt");
if(path==null) {
     //The file was not found, insert error handling here
}
File f = new File(path.toURI());

reader = new BufferedReader(new FileReader(f));
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X