Comment faire pour lire le fichier de chemin d'accès relatif au projet de Java? java.io.Le fichier ne peut pas trouver le chemin d'accès spécifié
J'ai un projet avec 2 packages:
tkorg.idrs.core.searchengines
tkorg.idrs.core.searchengines
Dans le forfait (2) j'ai un fichier texte ListStopWords.txt
, dans le forfait (1) j'ai une classe FileLoadder
. Voici le code dans FileLoader
:
File file = new File("properties\\files\\ListStopWords.txt");
Mais avoir cette erreur:
The system cannot find the path specified
Peut vous donner une solution pour résoudre ce problème? Merci.
- Votre paquet d'exemples sont les mêmes. Ne pas vous dire
properties.files
pour2
?
Vous devez vous connecter pour publier un commentaire.
Si elle est déjà dans le chemin de classe, puis juste obtenir à partir du chemin de classe au lieu de partir du système de fichier du disque. Ne pas jouer avec des chemins relatifs dans
java.io.File
. Ils sont à la charge sur le répertoire de travail actuel sur lequel vous avez totalement sans contrôle de l'intérieur du code Java.En supposant que
ListStopWords.txt
est dans le même package que votreFileLoader
classe, alors:Ou si vous êtes en fin de compte après est en fait un
InputStream
de:C'est certainement la préférence sur la création d'un
new File()
parce que leurl
ne représentent pas nécessairement un système de fichier du disque de chemin, mais il pourrait aussi représenter un système de fichiers virtuel chemin (ce qui peut se produire quand le BOCAL est développée en mémoire au lieu de le faire dans un dossier temporaire sur le disque système de fichiers) ou même un chemin d'accès réseau qui sont à la fois pas par définition digeste parFile
constructeur.Si le fichier est le nom du package astuces - est fait un fullworthy fichier de propriétés (contenant
key=value
lignes) avec juste le "mauvais" de l'extension, puis vous pouvez nourrir leInputStream
immédiatement à laload()
méthode.Remarque: lorsque vous essayez d'accéder à partir de l'intérieur
static
contexte, puis utilisezFileLoader.class
(ou quel que soitYourClass.class
) au lieu degetClass()
dans les exemples ci-dessus.NameOfYourCurrentClass.class.getResourceAsStream(...)
. LeClassLoader.class
échouera si leClassLoader
classe est chargé par un chargeur de classes différentes, ce qui peut se produire dans une "entreprise" de l'application avec une hiérarchie de plusieurs chargeurs de classes (comme une application web Java EE).La ligne suivante peut être utilisée que si nous voulons spécifier le chemin relatif du fichier.
InputStream
?Le chemin d'accès relatif œuvres en java en utilisant l' . de l'opérateur.
Donc, la question est de savoir comment savez-vous le chemin où java est actuellement à la recherche?
faire une petite expérience
Observer la sortie , vous arriverez à connaître le répertoire courant où java est à la recherche . À partir de là , il suffit d'utiliser l' ./l'opérateur de localiser votre fichier.
par exemple, si la sortie est
et votre fichier est présent dans le dossier Monprojet simplement utiliser
Espère que cette aide
.class
littérale qu'en fournissant le nom complet de sa catégorie.essayer
.\properties\files\ListStopWords.txt
Alors que la réponse fournie par BalusC qui fonctionne dans ce cas, il va se casser lorsque le chemin d'accès du fichier contient des espaces, parce que dans une URL, ces derniers sont convertis à 20% ce qui n'est pas un nom de fichier valide. Si vous créez le Fichier de l'objet à l'aide d'une URI plutôt qu'une Chaîne de caractères, les espaces seront traitées correctement:
Je pourrais avoir commenté mais j'ai moins de rep pour que.
Samrat de la réponse qu'a fait le travail pour moi. C'est pour mieux voir le chemin de répertoire via le code suivant.
J'ai simplement utilisé pour corriger un problème que j'ai été confronté dans mon projet. Veillez à utiliser ./pour revenir au répertoire parent du répertoire courant.
J'ai voulu analyser de "commande".json " à l'intérieur src/main//js/Simulator.java. Pour cela, j'ai copié le fichier json dans le dossier src et a donné le chemin d'accès absolu comme ceci :
En supposant que vous souhaitez lire à partir de
resources
répertoire dansFileSystem
classe.Remarque: Leader
.
n'est pas nécessaire.Si vous tentez d'appeler
getClass()
de méthode Statique ou statique bloquer la vous pouvez le faire de la façon suivante.Vous pouvez appeler
getClass()
sur leProperties
objets en cours de chargement.Si le fichier texte n'est pas en cours de lecture, essayez d'utiliser un plus près de chemin d'accès absolu (si vous le souhaitez
vous pourriez utiliser le chemin absolu,) comme ceci:
supposons que le chemin absolu est: