我有一个xml文件,作为资源包含在我的netbeans项目中。
现在,我试着用一个inputstream阅读器逐行阅读:
static InputStream nudeMap = Main.class.getResourceAsStream("overlay_map_2007.txt");
static BufferedReader br = new BufferedReader(new InputStreamReader(nudeMap,"UTF-8"));
=>这遇到了错误:
Exception in thread "Thread-4" java.lang.NullPointerException
at java.io.Reader.<init>(Reader.java:61)
at java.io.InputStreamReader.<init>(InputStreamReader.java:80)
我检查了文件的编码,它确实是UTF-8,所以我不认为这是编码问题。我在这里没有经验,但我怀疑这可能是因为文件实际上是xml格式的。第一行是:
<?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns:viz="http:///www.gexf.net/1.1draft/viz" version="1.1" xmlns="http://www.gexf.net/1.1draft">
我的观点是,我不想为我现有的文件编写解析器。你知道我如何将它作为一个普通的旧文本文件阅读而不会出错吗?Thx!
[EDIT]:明确:我想用br.readLine()读取这个文件;不是用Java Parser!
在我看来,似乎找不到您的文本文件。换句话说,我猜getResourceAsStream
返回的是null
,而这个null值导致了您得到的NullPointerException。
项目中的overlay_map_2007.txt
文件在哪里?
如果此文件不在"默认"包中,则需要"限定"资源的名称。例如,如果它位于文件夹com.example.myproject
中,则资源名称将为com/example/myproject/overlay_map_2007.txt
。
我认为你甚至不必走那么远。一个简单的谷歌搜索产生了这个很好的例子,它的DOM解析器:
http://www.mkyong.com/java/how-to-read-xml-file-in-java-dom-parser/
有一个反对DOM的东西,然后是SAX:
http://www.mkyong.com/java/how-to-read-xml-file-in-java-sax-parser/