2016-05-04 23 views
0

タイトルで述べたように、私は.propertiesファイルをjavaで読み込み、Propertiesオブジェクトに格納する必要があります。私はjFileChooserをJavaのスイングから実際に動作するファイルを取得し、引数を呼び出してファイルを新しいウィンドウに渡してからPropertiesオブジェクトに格納するのにload()メソッドを使用しますが、java.lang.NullPointerExceptionエラーが発生します。私はそれを説明しようとしているように私は明確だったと思う。java読み込み.propertiesファイル

これはコードです:

public void actionPerformed(ActionEvent e3) { //when button is pressed 
      JFileChooser fc2 = new JFileChooser (new File("C:\\Users\\Ciurga\\workspace\\PropertiesManager")); 
      fc2.setDialogTitle("Load Default Values File"); 
      fc2.setFileFilter(new FileTypeFilter(".properties", "Properties File")); 
      int result = fc2.showOpenDialog(null); 
      if(result == JFileChooser.APPROVE_OPTION){ 
       df = fc2.getSelectedFile(); //getting selected file and storing it in "df" which will be passed as calling argument  
       defaultNameTextField.setText(df.getName()); 
      } 
     } 

これは私が他のウィンドウにファイルを渡す方法です:

public void actionPerformed(ActionEvent e1) { 
      FormWindow w1 = new FormWindow (df, lf); //when button is pressed, create new window passing the files i got with jFileChooser 
     } 

そして、これは私がそれを保存しようとした方法ですa Propertiesオブジェクト:

private static Properties propDef; 
private static Properties propLim; 

private void run(File def, File lim) { 
    try { 
     propDef.load(new FileInputStream(def)); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    try { 
     propLim.load(new FileInputStream(lim)); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    System.out.println(propDef.getProperty("name")); 

} 

ありがとう、私はそれを初期化しなければならなかったと言ったように、今は正しく動作するようだ、それは単純なエラーでしたが、私は実際にはJavaの初心者です。 これは私が変更するものである:、あなたがpropDefを初期化しません

private static Properties propDef = new Properties(); 
private static Properties propLim = new Properties(); 
+0

'propDef'と' propLim'を初期化しましたか?そうでない場合、それらは 'null'で、' load'を呼び出すと 'NullPointerException'が返されます。 – Berger

答えて

0

あなたはNullPointerExceptionが取得する理由thatsの。

初期化した場合は、コードを入力してください。

0

おそらく、propDefpropLimはnullです。propDef.load(new FileInputStream(def));を呼び出すと、loadメソッドがインスタンスメソッドであるため、NPEを取得します。

関連する問題