S'il se trouve déjà dans le chemin de classe, récupérez-le simplement à partir du chemin de classe au lieu du système de fichiers du disque. Ne jouez pas avec les chemins relatifs java.io.File
. Ils dépendent du répertoire de travail actuel sur lequel vous n'avez aucun contrôle depuis l'intérieur du code Java.
En supposant que ce ListStopWords.txt
soit dans le même package que votre FileLoader
classe, alors faites:
URL url = getClass().getResource("ListStopWords.txt");
File file = new File(url.getPath());
Ou si tout ce que vous recherchez en fin de compte est en fait un InputStream
élément:
InputStream input = getClass().getResourceAsStream("ListStopWords.txt");
Ceci est certainement préférable à la création d'un new File()
car url
il ne représente pas nécessairement un chemin d'accès au système de fichiers sur disque, mais il peut également représenter un chemin d'accès au système de fichiers virtuel (ce qui peut se produire lorsque le JAR est étendu en mémoire plutôt que dans un dossier temporaire sur le système de fichiers disque) ou même un chemin réseau qui ne sont pas tous deux digestes par définition parFile
constructeur.
Si le fichier est - comme le nom du package l' indique - est en fait un fichier de propriétés digne de ce nom (contenant des key=value
lignes) avec juste la "mauvaise" extension, alors vous pouvez le transmettre InputStream
immédiatement à la load()
méthode.
Properties properties = new Properties();
properties.load(getClass().getResourceAsStream("ListStopWords.txt"));
Remarque: lorsque vous essayez d'y accéder depuis un static
contexte interne , utilisez FileLoader.class
(ou autre chose YourClass.class
) à la place des getClass()
exemples ci-dessus.
properties.files
pour2
?