2016-12-20 5 views
-2

私は以下のプログラムを書いていますが、何とか私のFileReaderが変数readerにnullを書き込みます。次の行で、BufferdReaderがNullPointerExceptionでクラッシュします。 パスをファイルにコピーしたので、正しいと見なします。なぜFileReaderがnullを返すのですか?

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; 
} 
+5

あなたが指定したコードは、あなたがどこかで宣言していない 'FileReader'メソッドを持っていなければコンパイルされません。 [mcve]を入力してください。 –

+1

ここでは次のようにしています:new new new(在庫があるので:p) –

+2

'new FileReader(file)'を意味しても、 'new'演算子は決してnullを返しません。だから唯一の解釈は、あなたのコードのどこかにnullを返す 'FileReader(File)'メソッドがあるということです。 – khelwood

答えて

1

あなたがFileReaderをインスタンス化し、それをコンパイルするためにFileReaderと呼ばれ、その後、自動生成された空のメソッドれたときnewを置くことを忘れるように見えます。

private FileReader FileReader(File file2)メソッド定義はまったく必要ありません。あなたはそれがないFileReaderと呼ばれる方法を探して、FileReaderのコンストラクタを呼び出していること

FileReader reader = new FileReader(file); 

にライン

FileReader reader = FileReader(file); 

を変更する必要があります。

関連する問題