我编写了以下程序,但不知何故,我的FileReader将null写入变量阅读器。在下一行中,BufferdReader崩溃并出现NullPointerException。 我已将路径复制到文件中,因此我认为它是正确的。
public class MyPaintPanel extends JPanel{
private static final long serialVersionUID = 1L;
//Bild einlesen
private BufferedImage image = null;
{
try {
File imageFile = new File ("C:/Users/M/workspace/Praktikum/lab4/geoPosition/OSM_BerlinerTor.png");
image = ImageIO.read(imageFile);
} catch (IOException e) {
e.printStackTrace();
System.out.println("Error image not found.");
}
}
//Route einlesen
{
try {
//Öffne Datei
File file = new File("C:/Users/M/workspace/Praktikum/lab4/geoPosition/RouteGeo.txt");
System.out.println("file = "+file);
FileReader reader = FileReader(file);
System.out.println("reader = "+reader);
BufferedReader bufferedReader = new BufferedReader(reader);
//Arbeite mit Datei
while (bufferedReader.ready()) {
System.out.println(bufferedReader.readLine());
}
//Schließe Datei
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
System.out.println("Error file not found.");
} catch (NullPointerException e){
e.printStackTrace();
System.out.println("Error file not found.");
} finally {
}
}
}
这是我程序的输出。我添加了一些System.out.println()来查看变量究竟是什么。
file = C:\Users\M\workspace\Praktikum\lab4\geoPosition\RouteGeo.txt
reader = null
java.lang.NullPointerException
Error file not found.
at java.io.Reader.<init>(Unknown Source)
at java.io.BufferedReader.<init>(Unknown Source)
at java.io.BufferedReader.<init>(Unknown Source)
at lab4.geoPosition.MyPaintPanel.<init>(MyPaintPanel.java:61)
at lab4.geoPosition.GeoGUI.<init>(GeoGUI.java:90)
at lab4.geoPosition.GeoGUI.main(GeoGUI.java:215)
好的,我找到了FileReader方法,我认为他自动生成它,因为它几乎是空的。
private FileReader FileReader(File file2) {
// TODO Auto-generated method stub
return null;
}
答案 0 :(得分:1)
在您实例化new
时,似乎忘记放置FileReader
,然后自动生成一个名为FileReader
的空方法以使其编译。
根本不需要private FileReader FileReader(File file2)
方法定义。你只需要更改行
FileReader reader = FileReader(file);
到
FileReader reader = new FileReader(file);
以便它调用FileReader
的构造函数,而不是查找名为FileReader
的方法。