Zeichenkette in Datei finden (Fehlermeldung: NullPointerException)

heidesch

Grünschnabel
Hallo,

ich möchte in einer CSV-Datei prüfen, ob drei Werte nacheinander vorkommen.

CSV-Inhalt:
user;pwuser;user
anna;pwanna;user
otto;pwotto;admin

Wenn die Parameter der nicht stimmen, wird eine java.lang.NullPointerException ausgeworfen. Wenn die Parameter stimmen, geht die Prüfung durch.

Keine Ahnung, wo ich ansetzen soll. Vielen Dank für Eure Tipps schonmal im Voraus.

Code:
public static void main(String[] args) throws IOException {
        mapLoginDataInFile("otto", "pwotto", "admin");
    }

private static void mapLoginDataInFile(String name, String pw, String rolle) throws FileNotFoundException, IOException {
        StringBuffer sb = new StringBuffer();
        sb.append(name + ";" + pw + ";" + rolle);

        FileReader fr = new FileReader("/datei.csv");
        BufferedReader br = new BufferedReader(fr);

        String line = "";
        boolean exist;

        do {
            line = br.readLine();
            exist = line.equals(sb.toString());

            if (line.equals(sb.toString()) == true) {
                exist = true;
                break;
            }
        } while (line != null);

        br.close();
        System.out.println(exist);
    }
 

Cojote

Erfahrenes Mitglied
Würde vermuten, dass dein Problem im line-Objekt liegt. Du liest die aktuelle Zeile in line ein und rufst dann direkt die equals-Methode auf line auf. Ist das Ende der Datei erreicht so gibt br.readLine() null zurück, ergo line=null und dann line.equals() was zur NullPointerException führt.

Bau einfach ne Prüfung ein bevor du auf nem Objekt ne Methode aufrufst.

Code:
 do {
            line = br.readLine();
            if(line!=null) {
               exist = line.equals(sb.toString());

               if (line.equals(sb.toString()) == true) {
                  exist = true;
                  break;
               }
            }
        } while (line != null);