J'ai un projet avec 2 packages:
tkorg.idrs.core.searchengines
tkorg.idrs.core.searchengines
Dans le package (2) j'ai un fichier texte ListStopWords.txt
, dans le package (1) j'ai une classe FileLoadder
. Voici le code en FileLoader
:
File file = new File("properties\\files\\ListStopWords.txt");
Mais ayez cette erreur:
The system cannot find the path specified
Pouvez-vous donner une solution pour y remédier? Merci.
properties.files
pour2
?Réponses:
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 votreFileLoader
classe, alors faites:Ou si tout ce que vous recherchez en fin de compte est en fait un
InputStream
élément:Ceci est certainement préférable à la création d'un
new File()
carurl
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 transmettreInputStream
immédiatement à laload()
méthode.Remarque: lorsque vous essayez d'y accéder depuis un
static
contexte interne , utilisezFileLoader.class
(ou autre choseYourClass.class
) à la place desgetClass()
exemples ci-dessus.la source
FileLoader
est la propre classe personnalisée d'OP. C'est censé être exactement cette classe dans laquelle vous essayez d'obtenir la ressource. Ainsi doncNameOfYourCurrentClass.class.getResourceAsStream(...)
. LeClassLoader.class
échouera si laClassLoader
classe est chargée par un autre chargeur de classe, ce qui peut se produire dans une application "entreprise" avec une hiérarchie de plusieurs chargeurs de classe (comme une application Web Java EE).La ligne suivante peut être utilisée si nous voulons spécifier le chemin relatif du fichier.
la source
InputStream
?InputStream is = new FileInputStream("./properties/files/ListStopWords.txt");
Le chemin relatif fonctionne en java en utilisant le. opérateur.
La question est donc de savoir comment connaître le chemin où le java est actuellement à la recherche?
faire une petite expérience
Observez la sortie, vous apprendrez à connaître le répertoire actuel où java recherche. À partir de là, utilisez simplement l'opérateur ./ pour localiser votre fichier.
par exemple si la sortie est
et votre fichier est présent dans le dossier MyProject utilisez simplement
J'espère que cela t'aides
la source
la source
.class
littéral qu'en fournissant le nom complet de sa classe.essayer
.\properties\files\ListStopWords.txt
la source
J'aurais pu commenter mais j'ai moins de rep pour ça. La réponse de Samrat a fait le travail pour moi. Il est préférable de voir le chemin du répertoire actuel via le code suivant.
Je l'ai simplement utilisé pour corriger un problème auquel je faisais face dans mon projet. Veillez à utiliser ./ pour revenir au répertoire parent du répertoire actuel.
la source
Bien que la réponse fournie par BalusC fonctionne pour ce cas, elle se cassera lorsque le chemin du fichier contient des espaces car dans une URL, ceux-ci sont convertis en% 20 qui n'est pas un nom de fichier valide. Si vous construisez l'objet File en utilisant un URI plutôt qu'une chaîne, les espaces seront gérés correctement:
la source
Je voulais analyser 'command.json' dans src / main // js / Simulator.java. Pour cela, j'ai copié le fichier json dans le dossier src et j'ai donné le chemin absolu comme ceci:
la source
En supposant que vous vouliez lire à partir du
resources
répertoire enFileSystem
classe.Remarque: L' interligne
.
n'est pas nécessaire.la source
Pour moi en fait, le problème est que le chemin de classe de l'objet File provient
<project folder path> or ./src
, donc l'utilisation aFile file = new File("./src/xxx.txt");
résolu mon problèmela source
String basePath = nouveau fichier ("monFichier.txt"). GetAbsolutePath (); ce chemin de base que vous pouvez utiliser comme chemin correct de votre fichier
la source
Si vous essayez d'appeler
getClass()
partir d'une méthode statique ou d'un bloc statique, vous pouvez procéder de la manière suivante.Vous pouvez appeler
getClass()
l'Properties
objet dans lequel vous chargez.la source
Si le fichier texte n'est pas lu, essayez d'utiliser un chemin absolu plus proche (si vous le souhaitez, vous pouvez utiliser un chemin absolu complet,) comme ceci:
supposons que le chemin absolu est:
la source