Путь к файлу или местоположение файла для Java - новый файл ()
У меня есть следующая структура для моего проекта.
В Затмении:
myPorjectName
src
com.example.myproject
a.java
com.example.myproject.data
b.xml
В a.java
, Я хочу читать b.xml
файл. Как я могу это сделать? В частности, в a.java
Я использовал следующий код:
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse (new File("data/b.xml"));
Этот код не может найти b.xml
, Однако, если я изменю путь к src/com/example/myproject/data/b.xml
тогда это работает. Кажется, текущее местоположение находится в корне файла моего проекта.
Но я вижу примеры других людей, если b.xml
а также a.java
находятся в одной папке, то мы можем напрямую использовать new File("b.xml")
, Но я стараюсь ставить b.xml
в той же папке a.java
вместо того, чтобы положить в подпапку, но все равно не работает. Если это работает, то в моем случае я смогу использовать new File("data/b.xml")
, право? Я действительно не понимаю, почему это не работает.
1 ответ
Если он уже находится в classpath и в том же пакете, используйте
URL url = getClass().getResource("b.xml");
File file = new File(url.getPath());
ИЛИ, прочитайте это как InputStream
:
InputStream input = getClass().getResourceAsStream("b.xml");
Внутри static
метод, вы можете использовать
InputStream in = YourClass.class.getResourceAsStream("b.xml");
Если ваш файл находится не в том же пакете, что и класс, из которого вы пытаетесь получить доступ к файлу, то вы должны указать ему относительный путь, начиная с '/'
,
ex : InputStream input = getClass().getResourceAsStream
("/resources/somex.cfg.xml");which is in another jar resource folder