2013-12-13 101 views
0

奇怪的情況在這裏,它使我瘋狂。我的項目根目錄中有一個XML骨架文件,我想將其讀入我的程序並根據用戶輸入進行修改。我收到一個文件未找到異常,我不明白爲什麼。我的項目叫做customerCreator。 XML文件是:無法訪問項目目錄中的XML文件

C:\Users\user\Documents\NetBeansProjects\CustomerCreator\skeleton.xml 

我的Java源文件是:

C:\用戶\用戶\文檔\的NetBeansProjects \ CustomerCreator的\ src \ java的\組織\用戶\ r6CustomerCreator \解析器\ XMLParser的的.java

編輯:使用絕對文件路徑導致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

謝謝但看到我的評論弗蘭克下面。同樣的結果! – adohertyd

+0

將您的文件放在NetBeans資源文件夾中,然後重試。 – vzamanillo

+0

所以我把它放在C:\ Users \ user \ Documents \ NetBeansProjects \ r6CustomerCreator \ src \ resources \ skeleton.xml中,但得到同樣的問題 – adohertyd

1

你應該嘗試使用FULLPATH。如果它起作用,則意味着您的活動解決方案目錄不是您認爲的那個。

+0

試過,並得到了錯誤:'java.lang.IllegalArgumentException:InputStream不能爲空',但我知道肯定該文件不是空的 – adohertyd

1

的話,試着改變你的文件擴展名,並給它的另一個嘗試。如果它有效,我會建議你使用專用的xml類來讀取文件。嘗試.txt擴展名

也可以看看this。看起來像你應該使用以下語法FileInputStream fis = new FileInputStream (new File(NAME_OF_FILE));

+0

謝謝弗蘭克,但仍然無法與建議:( – adohertyd