2016-12-20 4 views
-2

다음 프로그램을 작성했지만 어떻게 든 내 FileReader는 변수 판독기에 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 방법을 발견, 나는 그가 그것을 자동 생성의 allmost 비어 있기 때문에 생각합니다. 당신이 FileReader를 인스턴스화 한 다음 빈 메소드가 컴파일 할 FileReader라는 자동 생성 될 때 new을 넣어하는 것을 잊지처럼

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

는 것 같습니다.

private FileReader FileReader(File file2) 메서드 정의가 전혀 필요하지 않습니다. 당신은 그렇게하지 FileReader라는 방법을 찾고, FileReader의 생성자를 호출된다

FileReader reader = new FileReader(file); 

에 선

FileReader reader = FileReader(file); 

을 변경해야합니다.

관련 문제