2013-12-13 7 views
0

Странная ситуация здесь и ее сведение с ума. У меня есть скелетный XML-файл в корневой директории проекта, и я хочу прочитать его в своей программе и изменить его на основе ввода пользователей. Я получаю исключение, не найденное в файле, и я не понимаю, почему. Мой проект называется customerCreator. Файл XML находится:Невозможно получить доступ к файлу XML в каталоге проекта

C:\Users\user\Documents\NetBeansProjects\CustomerCreator\skeleton.xml 
исходный файл

My Java находится по адресу:

C: \ Users \ Пользователь \ Documents \ NetBeansProjects \ CustomerCreator \ SRC \ Java \ орг \ пользователь \ r6CustomerCreator \ парсеры \ XMLParser .java

EDIT: Использование абсолютного FilePath вызывает ошибку follwing: java.lang.IllegalArgumentException: InputStream не может быть пустым

public class XMLParser { 

    public XMLParser(Map paramMap) { 
     parseXML(paramMap); 
    } 

    private void parseXML(Map<String, String> paramMap) { 
     DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder builder = null; 
     Document document = null; 

      try { 
       builder = builderFactory.newDocumentBuilder(); 
      } catch (ParserConfigurationException e) { 
       e.printStackTrace(); 
      } 

      try { 
       document = builder.parse(new FileInputStream("skeleton.xml")); 
      } catch (SAXException | IOException e) { 
       e.printStackTrace(); 
      } 

     System.out.print(document); 
    } 

} 

ответ

2

Попробуйте

document = builder.parse(this.getClass().getResourceAsStream("/resources/skeleton.xml")); 

Это работает для меня

Netbeans

+0

Спасибо, но посмотрите мой комментарий к Franck ниже. Тот же результат! – adohertyd

+0

Поместите свой файл в папку ресурсов в netbeans и повторите попытку. – vzamanillo

+0

Итак, я помещал его в C: \ Users \ user \ Documents \ NetBeansProjects \ r6CustomerCreator \ src \ resources \ skeleton.xml, но получал ту же самую проблему. – adohertyd

1

вы должны попытаться использовать FULLPATH. Если он работает, это означает, что ваш активный каталог решений не тот, который вы считаете.

+0

Пробовал это и получил ошибку: 'java.lang.IllegalArgumentException: InputStream не может быть null, но я точно знаю, что файл не пуст – adohertyd

1

хорошо, попытайтесь изменить расширение файла и дать ему еще одну попытку. Если он работает, я советую вам использовать выделенные классы xml для чтения из вашего файла. попробуйте .txt расширение

также посмотрите this. Похоже, вы должны использовать следующий синтаксис FileInputStream fis = new FileInputStream (new File(NAME_OF_FILE));

+0

Спасибо Franck, но все еще не работает ни с предложением :( – adohertyd

Смежные вопросы