为什么我的FileReader返回null?

时间:2016-12-20 12:05:36

标签: java

我编写了以下程序,但不知何故,我的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;
}

1 个答案:

答案 0 :(得分:1)

在您实例化new时,似乎忘记放置FileReader,然后自动生成一个名为FileReader的空方法以使其编译。

根本不需要private FileReader FileReader(File file2)方法定义。你只需要更改行

FileReader reader = FileReader(file);

FileReader reader = new FileReader(file);

以便它调用FileReader的构造函数,而不是查找名为FileReader的方法。