2010-06-14 9 views
0

J'ai un fichier words.txt que j'ai mis dans un paquet java particulier et que je devrais lire à partir de ce même emplacement. Je ne contrôle pas le déploiement, donc je ne sais pas où les paquets seront déployés.Comment lire un fichier à partir d'un paquet - quelque chose comme un paquet de ressources en Java

Exemple d'emplacement: com/example/files/words.txt.

Je sais comment utiliser la classe ResourceBundle pour lire le fichier de propriétés de la hiérarchie du package plutôt qu'un chemin relatif/absolu. like ResourceBundle.getBundle (com.example.files.words) Existe-t-il quelque chose de similaire pour les fichiers généraux afin que je puisse le lire à partir de la hiérarchie du package plutôt que d'un chemin absolu/relatif?

Répondre

4

Vous pouvez utiliser la méthode getResourceAsStream() (définie dans la classe Class) pour extraire des ressources du chemin d'accès aux classes. Si la classe WordReader est situé dans le paquet com.example le chemin d'accès au fichier de ressources devrait être files/words.txt

package com.example; 

public class WordReader { 

    public void readWords() { 
    InputStream is = getClass().getResourceAsStream("files/words.txt"); 
    StringBuilder sb = new StringBuilder(); 
    for(Scanner sc = new Scanner(is); sc.hasNext();) 
     sb.append(sc.nextLine()).append('\n'); 

    String content = sb.toString(); 
    } 
} 
+0

semble prometteur mais est-ce que vous faites cela? Cela devrait être un problème assez commun avec les déploiements. Je me demande simplement si c'est la meilleure pratique pour cela. –

+0

Oui. Cette méthode fonctionne parfaitement. Merci! –