Подтвердить что ты не робот

Как получить файлы из папки ресурсов. Spring Структура

Я пытаюсь размонтировать мой XML файл:

public Object convertFromXMLToObject(String xmlfile) throws IOException {
    FileInputStream is = null;
    File file = new File(String.valueOf(this.getClass().getResource("xmlToParse/companies.xml")));
    try {
        is = new FileInputStream(file);
        return getUnmarshaller().unmarshal(new StreamSource(is));
    } finally {
        if (is != null) {
            is.close();
        }
    }
}

Но я получаю следующие ошибки: java.io.FileNotFoundException: null (Нет такого файла или каталога)

Вот моя структура:

введите описание изображения здесь

Почему я не могу получить файлы из папки ресурсов? Спасибо.

Обновить.

После рефакторинга

URL url = this.getClass(). getResource ( "/xmlToParse/companies.xml" );       Файл file = new File (url.getPath());

Я вижу более ясную ошибку:

java.io.FileNotFoundException:/content/ROOT.war/WEB-INF/classes/xmlToParse/companies.xml(Нет такого файла или каталога)

Он пытается найти WEB-INF/classes/ Я добавил туда папку, но все равно получаю эту ошибку: (

введите описание изображения здесь

4b9b3361

Ответ 1

У меня была такая же проблема, пытаясь загрузить некоторые файлы XML в мои тестовые классы. Если вы используете Spring, как можно предположить из вашего вопроса, самый простой способ - использовать org.springframework.core.io.Resource - один Raphael Rot h уже упоминался.

Код действительно прямой. Просто объявите поле типа org.springframework.core.io.Resource и отметьте его org.springframework.beans.factory.notation.Value - вот так:

@Value(value = "classpath:xmlToParse/companies.xml")
private Resource companiesXml;

Чтобы получить необходимый InputStream, просто позвоните

companiesXml.getInputStream()

и вы должны быть в порядке:)

Но простите меня, я должен задать одно: почему вы хотите реализовать парсер XML с помощью Spring? Есть много встроенных:). для веб-сервисов есть очень хорошие решения, которые объединяют ваши XML-объекты в объекты Java и обратно...

Ответ 2

ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("fileName").getFile());

Ответ 3

вы должны дать абсолютный путь (так что добавьте загрузку '/', где каталог ресурсов - это корневая папка):

public Object convertFromXMLToObject(String xmlfile) throws IOException {
    FileInputStream is = null;
    File file = new File(String.valueOf(this.getClass().getResource("/xmlToParse/companies.xml")));
    try {
        is = new FileInputStream(file);
        return getUnmarshaller().unmarshal(new StreamSource(is));
    } finally {
        if (is != null) {
            is.close();
        }
    }
}