2010-12-05 67 views
9

J'essaie de lire un fichier texte dans un package spécifique mais le résultat est introuvable. Je peux le lire en insérant le chemin absolu mais je souhaite le lire sans l'insérer le chemin absolu.Lecture d'un fichier txt à partir d'un package spécifique Java

String texto = "Utils/CEP/Cidades/" + estado + ".txt"; 
FileReader fr = new FileReader(texto); 
BufferedReader in = new BufferedReader(fr); 

Comment faire?

Merci

+0

Que voulez-vous dire par «dans un emballage spécifique»? Quel paquet? – skaffman

+0

Cela ressemble à un doublon à la question suivante: http://stackoverflow.com/questions/4359876/how-to-load-reference-a-file-as-a-file-instance-from-the-classpath –

Répondre

22

Vous pouvez utiliser

InputStream in = 
    getClass().getResourceAsStream("/Utils/CEP/Ciades/" + estado + ".txt"); 
Reader fr = new InputStreamReader(in, "utf-8"); 

Quelques sidenotes: ne pas utiliser des lettres majuscules dans les noms de paquet; utiliser les noms anglais de vos variables. Ce sont des pratiques et des conventions acceptées.

0

Pour une portabilité totale, envisagez d'utiliser File.separator en place des barres obliques, mais oui getResourceAsStream devrait fonctionner. Gardez à l'esprit que si vous travaillez dans eclipse, vos fichiers de classe seront probablement dans bin par rapport à votre répertoire de travail, donc si c'est seulement dans votre dossier de projet, la façon dont vous l'avez devrait fonctionner, mais pas getResourceAsStream. Alternativement, si la ressource que vous souhaitez accéder est dans un dossier source, elle sera copiée dans la corbeille chaque fois que vous nettoyez votre projet afin que getResourceAsStream fonctionne.

10

Il pourrait être peu en retard encore cela pourrait aider beaucoup d'autres. Ce sont des moyens d'accéder aux ressources disponibles dans le projet

ressources Obtenir forment le package par défaut

// Getting Resource as file object 
File f = new File(getClass().getResource("/excludedir.properties").getFile()); 

// Getting resource as stream object 
InputStream in = getClass().getResourceAsStream("/excludedir.properties"); 

ressources Obtenir de packages spécifiques

// Getting Resource as file object 
File f = new File(getClass().getResource("/com/vivek/core/excludedir.properties").getFile()); 

// Getting resource as stream object 
InputStream in = getClass().getResourceAsStream("/com/vivek/core/excludedir.properties"); 

Note: getClass () est une fonction non statique qui ne peut pas être appelée à partir du contexte statique. Si vous voulez appeler à partir du contexte statique, utilisez

YourClassName.class.getResource("/com/vivek/core/excludedir.properties").getFile() 

Espérons que cela vous aide. À votre santé!!

+0

Cela m'a beaucoup aidé. tx –