ich auf einem Android App arbeite, die Text aus einer Datei zu analysieren hat.App stürzt ab, wenn BufferedReader.readLine zu nennen versuchen()
Ich habe die folgende Methode in meiner Parser.java Klasse:
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;
}
ich ein Problem bin immer, wenn es einen Anruf an die buffer.readLine() -Methode in der while-Schleife ist.
ich in der folgenden Pfad Info passieren ist das File-Objekt so:
"/Users/aa/Desktop/parser.txt"
Jetzt habe ich an zahlreichen Beiträgen auf dem Stapel und Online, um sah dies zu versuchen und zu lösen, und haben versucht, ein paar Lösungen mit von this und this hatten aber kein Glück. Dies ist ein Ausschnitt aus dem Fehler-Stack-Trace, den ich bekomme.
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)
Ich bin sicher, dass der Pfad der Datei korrekt ist, weil ich es während des Debuggens überprüft. Ich bin mir nicht sicher, was ich hier noch überlegen sollte.
EDIT: ich auf OS X nicht Windows oder Linux entwickle
Es ist, weil Sie nach dem Fang des 'FileNotFoundException' fortsetzen, trotz' buffer' nie gesetzt wird. –
Ihr Puffer kann nicht initialisiert werden, wenn die Datei nicht gefunden werden kann. Stellen Sie sicher, dass Sie alle Dateilesevorgänge abbrechen, wenn dies geschieht. – f1sh
Versuchen Sie, 'return null;' im 'FileNotFoundException' –