Chemin d'accès du fichier ou l'emplacement des fichiers de Java - new file()
Je avoir la structure suivante pour mon projet.
Dans Eclipse:
myPorjectName
src
com.example.myproject
a.java
com.example.myproject.data
b.xml
Dans a.java
, je veux lire b.xml
fichier. Comment puis-je le faire? Plus précisément, dans a.java
, j'ai utilisé le code suivant:
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse (new File("data/b.xml"));
Ce code ne peut pas trouver b.xml
. Cependant, si je change le chemin d'accès à src/com/example/myproject/data/b.xml
, alors il fonctionne. L'emplacement actuel semble être dans la racine de mon dossier de projet.
Mais je vois d'autres personnes d'exemples, si b.xml
et a.java
sont dans le même dossier, alors nous pouvons utiliser directement new File("b.xml")
. Mais j'ai essayer de mettre b.xml
dans le même dossier de a.java
plutôt que de le mettre dans le sous-dossier, mais qu'il est encore ne fonctionne pas. Si cela fonctionne, alors dans mon cas, je devrais être en mesure d'utiliser new File("data/b.xml")
, droit? Je ne comprends vraiment pas pourquoi cela ne fonctionne pas.
getClass().getResourceAsInputStream("/com/example/myproject/data/b.xml");
Il ne fonctionne pas parce que votre répertoire par défaut (que java est en cours d'exécution. est
myPorjectName
il n'est pas dans myproject
xagyg et MadProgrammer les commentaires de me faire comprendre pourquoi je le faisais mal. Merci les gars. La réponse suivante me fait apprendre quelque chose de plus.
OriginalL'auteur Joey | 2013-05-01
Vous devez vous connecter pour publier un commentaire.
Si c'est déjà dans le chemin de classe et dans le même paquet, utilisez
OU , à le lire comme un
InputStream
:À l'intérieur d'un
static
méthode, vous pouvez utiliserSi votre fichier n'est pas dans le même package que la classe que vous essayez d'accéder au fichier, vous devez donner le chemin relatif à partir avec
'/'
.si ce n'est pas dans le même paquet? dans mon exemple, a.java est com.exemple.myproject. b.xml est com.exemple.myproject.les données.
j'ai édité la réponse.
+1.Cela devrait fonctionner.Noob revoir mon edit
L'utilisation d'un chemin d'accès complet ie
"/com/example/myproject/data/b.xml"
à la place...OriginalL'auteur NINCOMPOOP