我正在從一個文件解析文本的Android應用程序工作。應用程序嘗試調用時崩潰BufferedReader.readLine()
我在Parser.java類下面的方法:
private String getText(String fileName) {
BufferedReader buffer = null;
File file = new File(fileName);
try{
buffer = new BufferedReader(new FileReader(file));
}
catch (FileNotFoundException e){
System.out.println("Could not find file" + fileName);
}
String everything = null;
try{
StringBuilder builder = new StringBuilder();
String line = null;
while ((line = buffer.readLine()) != null){
builder.append(line);
builder.append(System.lineSeparator());
line = buffer.readLine();
}
everything = builder.toString();
//buffer.close();
}
catch (IOException e) {
e.printStackTrace();
return null;
}
finally {
if ((buffer != null)) {
try {
buffer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
return everything;
}
我得到的一個問題,每當有到while循環內的buffer.readLine()方法的調用。
我通過以下路徑信息的文件對象是這樣的:
"/Users/aa/Desktop/parser.txt"
現在我已經看了看棧和網絡,以試圖解決這個無數的帖子,並使用一些解決方案試圖從this和this,但沒有運氣。這是我得到的錯誤堆棧跟蹤的片段。
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.BufferedReader.readLine()' on a null object reference
at com.example.allanaraujo.parser.Parser.getText(Parser.java:40)
at com.example.allanaraujo.parser.Parser.parse(Parser.java:19)
at com.example.allanaraujo.parser.OpenDocument.uploadButton(OpenDocument.java:62)
at java.lang.reflect.Method.invoke(Native Method)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:5198)
at android.view.View$PerformClick.run(View.java:21147)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
我確定該文件的路徑是正確的,因爲我在調試時對其進行了檢查。我不知道我應該在這裏考慮什麼。
編輯:我在OS X而非Windows或Linux
這是因爲你捕捉'FileNotFoundException'後繼續,儘管'buffer'從來沒有被設置。 –
無法找到文件時,無法初始化緩衝區。確保在發生這種情況時中止讀取所有文件。 – f1sh
嘗試在'FileNotFoundException'中返回null;' –