J'ai 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 le fichier b.xml
. Comment puis je faire ça? 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 en src/com/example/myproject/data/b.xml
Alors cela fonctionne. L'emplacement actuel semble être à la racine de mon fichier de projet.
Mais je vois les exemples des autres, si b.xml
Et a.Java
Sont dans le même dossier, alors nous pouvons directement utiliser new File("b.xml")
. Mais j'essaie mettre b.xml
dans le même dossier que a.Java
plutôt que de mettre dans le sous-dossier, mais cela ne fonctionne pas. Si cela fonctionne, dans mon cas, je devrais être en mesure d'utiliser new File("data/b.xml")
, non? Je ne comprends vraiment pas pourquoi cela ne fonctionne pas.
S'il se trouve déjà dans le chemin de classe et dans le même package, utilisez
URL url = getClass().getResource("b.xml");
File file = new File(url.getPath());
OU, lisez-le comme un InputStream
:
InputStream input = getClass().getResourceAsStream("b.xml");
Dans une méthode static
, vous pouvez utiliser
InputStream in = YourClass.class.getResourceAsStream("b.xml");
Si votre fichier n'est pas dans le même package que la classe à partir de laquelle vous essayez d'accéder au fichier, vous devez lui donner un chemin relatif commençant par '/'
.
ex : InputStream input = getClass().getResourceAsStream
("/resources/somex.cfg.xml");which is in another jar resource folder