2016-08-09 6 views
0

В настоящее время я изучаю JAXP, SAX, DOM, StAX, XPath и XSLT. И пока я тестировал, как работает StAX, я обнаружил ошибку.FileReader не может найти файл XML в той же папке

Exception in thread "main" java.io.FileNotFoundException: test.xml (The system cannot find the file specified) 
    at java.io.FileInputStream.open0(Native Method) 
    at java.io.FileInputStream.open(FileInputStream.java:195) 
    at java.io.FileInputStream.<init>(FileInputStream.java:138) 
    at java.io.FileInputStream.<init>(FileInputStream.java:93) 
    at java.io.FileReader.<init>(FileReader.java:58) 
    at xmltest.XMLTest.main(XMLTest.java:16) 

Это классическая ошибка, и я знаю, что это значит, проблема в том, я не знаю, почему она появляется, так как «test.xml» и «XMLTest.java» находятся в той же папке,/пакет.

Вот код ниже:

XMLTest.java -

package xmltest; 

import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.Reader; 
import javax.xml.stream.XMLInputFactory; 
import javax.xml.stream.XMLStreamException; 
import javax.xml.stream.XMLStreamReader; 

public class XMLTest { 

    public static void main(String[] args) throws FileNotFoundException, XMLStreamException { 

     XMLInputFactory xmlif = XMLInputFactory.newFactory(); 
     Reader reader = new FileReader("test.xml"); 
     XMLStreamReader xmlsr = xmlif.createXMLStreamReader(reader); 


     while (xmlsr.hasNext()) { 

      switch (xmlsr.next()) { 
       case XMLStreamReader.START_ELEMENT: 
        System.out.println("START_ELEMENT"); 
        System.out.println(" Qname = " + xmlsr.getName()); 

        break; 
       case XMLStreamReader.END_ELEMENT: 
        System.out.println("END_ELEMENT"); 
        System.out.println(" Qname = " + xmlsr.getName()); 
      } 
     } 
    } 

} 

test.xml -

<?xml version="1.0"?> 
    <catalog> 
     <book id="bk101"> 
      <author>Gambardella, Matthew</author> 
      <title>XML Developer's Guide</title> 
      <genre>Computer</genre> 
      <price>44.95</price> 
      <publish_date>2000-10-01</publish_date> 
      <description>An in-depth look at creating applications 
      with XML.</description> 
     </book> 
     <book id="bk102"> 
      <author>Ralls, Kim</author> 
      <title>Midnight Rain</title> 
      <genre>Fantasy</genre> 
      <price>5.95</price> 
      <publish_date>2002-12-16</publish_date> 
      <description>A former architect battles corporate zombies, 
      an evil sorceress, and her own childhood to become queen 
      of the world.</description> 
     </book> 
     <book id="bk103"> 
      <author>Corets, Eva</author> 
      <title>Maeve Ascendant</title> 
      <genre>Fantasy</genre> 
      <price>5.95</price> 
      <publish_date>2000-11-17</publish_date> 
      <description>After the collapse of a nanotechnology 
      society in England, the young survivors lay the 
      foundation for a new society.</description> 
     </book> 
     <book id="bk104"> 
      <author>Corets, Eva</author> 
      <title>Oberon's Legacy</title> 
      <genre>Fantasy</genre> 
      <price>5.95</price> 
      <publish_date>2001-03-10</publish_date> 
      <description>In post-apocalypse England, the mysterious 
      agent known only as Oberon helps to create a new life 
      for the inhabitants of London. Sequel to Maeve 
      Ascendant.</description> 
     </book> 
     <book id="bk105"> 
      <author>Corets, Eva</author> 
      <title>The Sundered Grail</title> 
      <genre>Fantasy</genre> 
      <price>5.95</price> 
      <publish_date>2001-09-10</publish_date> 
      <description>The two daughters of Maeve, half-sisters, 
      battle one another for control of England. Sequel to 
      Oberon's Legacy.</description> 
     </book> 
     <book id="bk106"> 
      <author>Randall, Cynthia</author> 
      <title>Lover Birds</title> 
      <genre>Romance</genre> 
      <price>4.95</price> 
      <publish_date>2003-09-02</publish_date> 
      <description>When Carla meets Paul at an ornithology 
      conference, tempers fly as feathers get ruffled.</description> 
     </book> 
     <book id="bk107"> 
      <author>Thurman, Paula</author> 
      <title>Splish Splash</title> 
      <genre>Romance</genre> 
      <price>4.95</price> 
      <publish_date>2004-11-02</publish_date> 
      <description>A deep sea diver finds true love twenty 
      thousand leagues beneath the sea.</description> 
     </book> 
     <book id="bk108"> 
      <author>Knorr, Stefan</author> 
      <title>Creepy Crawlies</title> 
      <genre>Horror</genre> 
      <price>4.95</price> 
      <publish_date>2005-12-06</publish_date> 
      <description>An anthology of horror stories about roaches, 
      centipedes, scorpions and other insects.</description> 
     </book> 
     <book id="bk109"> 
      <author>Kress, Peter</author> 
      <title>Paradox Lost</title> 
      <genre>Science Fiction</genre> 
      <price>6.95</price> 
      <publish_date>2006-11-02</publish_date> 
      <description>After an inadvertant trip through a Heisenberg 
      Uncertainty Device, James Salway discovers the problems 
      of being quantum.</description> 
     </book> 
     <book id="bk110"> 
      <author>O'Brien, Tim</author> 
      <title>Microsoft .NET: The Programming Bible</title> 
      <genre>Computer</genre> 
      <price>36.95</price> 
      <publish_date>2006-12-09</publish_date> 
      <description>Microsoft's .NET initiative is explored in 
      detail in this deep programmer's reference.</description> 
     </book> 
     <book id="bk111"> 
      <author>O'Brien, Tim</author> 
      <title>MSXML3: A Comprehensive Guide</title> 
      <genre>Computer</genre> 
      <price>36.95</price> 
      <publish_date>2007-12-01</publish_date> 
      <description>The Microsoft MSXML3 parser is covered in 
      detail, with attention to XML DOM interfaces, XSLT processing, 
      SAX and more.</description> 
     </book> 
     <book id="bk112"> 
      <author>Galos, Mike</author> 
      <title>Visual Studio 7: A Comprehensive Guide</title> 
      <genre>Computer</genre> 
      <price>49.95</price> 
      <publish_date>2008-04-16</publish_date> 
      <description>Microsoft Visual Studio 7 is explored in depth, 
      looking at how Visual Basic, Visual C++, C#, and ASP+ are 
      integrated into a comprehensive development 
      environment.</description> 
     </book> 
    </catalog> 

А вот ссылка на снимок экрана моя иерархия: http://pasteboard.co/6FbvgJLx6.png

Благодарим вас заблаговременно. :)

EDIT Когда я поставил абсолютный путь к файлу, он отлично работает, но я не хочу жесткий код этого ...

+0

Как вы запуска вашей программы? – bradimus

+0

XMLTest.java и test.xml могут находиться в одном каталоге ... Что из XMLTest.class? –

+0

Я использую Netbeans и просто запускаю программу, как все, что я делал раньше ... В прошлом я использовал много FileReading, управление файлами и т. Д., И я не знаю, почему это происходит сейчас :( –

ответ

2

Попробуйте загрузить файл в качестве Ресурс, подобный этому

URL fileURL = this.getClass().getResource("test.xml"); 
File file = new File(fileURL.getPath()); 

Это загрузит ваш файл из того же пакета класса, который загружает ресурс.

Вы также можете указать абсолютный путь к файлу, используя

URL fileURL = this.getClass().getResource("/my/package/to/test.xml"); 
+0

Я не могу загрузить файл в качестве ресурса, потому что URL-адрес не будет импортироваться правильно по какой-то причине ... –