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.txtsoit dans le même package que votre FileLoaderclasse, 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 urlil 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=valuelignes) avec juste la "mauvaise" extension, alors vous pouvez le transmettre InputStreamimmé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 staticcontexte interne , utilisez FileLoader.class(ou autre chose YourClass.class) à la place des getClass()exemples ci-dessus.
properties.filespour2?