2012-02-10 63 views
0

以下方法顯示NullPointerException。我無法理解下面的代碼有什麼問題。該文件存儲在BufferedWriter中的NullPointerException

public class Mtx extends Activity { 
public void ConfWrite() { 
    try { 
    BufferedWriter buf = new BufferedWriter(new FileWriter(getFilesDir()+"\\file.java")); 

     buf.write("Hello Android"); 
     buf.newLine(); 
     buf.close(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

}

堆棧跟蹤輸出

02-10 13:11:18.365: WARN/System.err(7179): java.lang.NullPointerException 
02-10 13:11:18.396: WARN/System.err(7179):  at android.content.ContextWrapper.getFilesDir(ContextWrapper.java:178) 
02-10 13:11:18.419: WARN/System.err(7179):  at mediatronix.HAT.Mtx.ConfWrite(Mtx.java:19) 
02-10 13:11:18.425: WARN/System.err(7179):  at mediatronix.HAT.MainMenu.onCreate(MainMenu.java:46) 
02-10 13:11:18.437: WARN/System.err(7179):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
02-10 13:11:18.485: WARN/System.err(7179):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
02-10 13:11:18.495: WARN/System.err(7179):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
02-10 13:11:18.505: WARN/System.err(7179):  at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
02-10 13:11:18.525: WARN/System.err(7179):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
02-10 13:11:18.545: WARN/System.err(7179):  at android.os.Handler.dispatchMessage(Handler.java:99) 
02-10 13:11:18.555: WARN/System.err(7179):  at android.os.Looper.loop(Looper.java:123) 
02-10 13:11:18.585: WARN/System.err(7179):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
02-10 13:11:18.616: WARN/System.err(7179):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-10 13:11:18.625: WARN/System.err(7179):  at java.lang.reflect.Method.invoke(Method.java:521) 
02-10 13:11:18.665: WARN/System.err(7179):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
02-10 13:11:18.675: WARN/System.err(7179):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
02-10 13:11:18.695: WARN/System.err(7179):  at dalvik.system.NativeStart.main(Native Method) 

感謝

+0

是方法getFilesDir()正常工作 – jeet 2012-02-10 07:24:17

+0

我不知道,怎麼我可以嗎 ? – Riskhan 2012-02-10 07:28:54

+1

發佈堆棧跟蹤和getFilesDir()方法的內容(這很可能是問題的根源)。 – 2012-02-10 07:32:43

回答

1

取而代之的是:

getFilesDir()+"file.java" 

試試這個:

new File(getFilesDir(), "file.java") 

或者更好的是,

new BufferedWriter(new OutputStreamWriter(
    openFileOutput("file.java", MODE_PRIVATE))) 
+0

我試過上述修改,但沒有更改 – Riskhan 2012-02-10 07:38:04

+1

@techcent - 無論如何,這是在框架調用「Mtx.onCreate」之前執行的嗎? ?它看起來像'MainMenu.onCreate'這樣的堆棧跟蹤在活動真正離開地面之前調用'Mtx.ConfWrite'。這會導致'ContextWrapper.getFilesDir()'中的NPE。 – 2012-02-10 08:02:44

0

你可以嘗試

getFilesDir() + File.separator + "\file.java" 

編輯:謝謝你的Heiko

+0

您應該爲便攜性使用File.separator - \是Windows特定的 – 2012-02-10 07:26:46

+0

仍然存在問題 – Riskhan 2012-02-10 07:28:30

+0

您可以顯示跟蹤堆棧嗎? – 2012-02-10 07:29:48