Stringsuche in Textdatei liefert falsches Ergebnis

irfl

Mitglied
Hallo,

ich möchte überprüfen, wie die Einstellung in den Properties (Logfile wird überschrieben: ja/nein) lautet. Allerdings ist in der Datei = false angegeben, somit müsste ja nein angegeben werden, aber das Ergebnis lautet true. Hab es sogar schon aufgemalt, aber verstehe einfach nicht, warum genau das umgekehrte Ergebnis herauskommt:(

Code:
public String ueberpruefung() throws IOException{
		
		String fortschreibung = "";
		
		BufferedReader br = new BufferedReader(new FileReader("[...]"));
		String line;
		while((line = br.readLine()) != null) {
			if(line == "log4j.appender.logfile.Append = false"){
				fortschreibung = "nein";
			}
			else{
				fortschreibung = "ja";
			}
		}
		return fortschreibung;
	}

Liegt es an der If-Bedingung Wäre schön, wenn ihr einen Tipp für mich hättet...
 
Hallo,
1. Fehler: Beim "==" Vergleich zweier Strings werden nur die beiden Referenzen miteinander verglichen werden, nicht jedoch die Objekte. Du musst deshalb mit line.equals(...) vergleichen.

2. Fehler: Falls die gesuchte Zeile NICHT die letzte Zeile in deinem Property-File ist, wird beim nächsten Schleifen-Durchlauf wieder der else-branch genommen und dein gesuchtes Ergebnis überschrieben. Falls du also dein gesuchtes Ergebnis schon gefunden hast, kannst du es ja direkt mittels eines return-Statements zurückgeben.

Java:
public String ueberpruefung() throws IOException{
    BufferedReader br = new BufferedReader(new FileReader("[...]"));
    String line;
    while((line = br.readLine()) != null) {
        if(line.equals("log4j.appender.logfile.Append = false")){
	        return "nein";
	    }
    }
    return "ja";
}
 
Moin,

wenn ich es richtig sehe, durchsuchst Du mit Deiner while-Schleife doch die gesamte Datei (sprich: "... solange es was zu lesen gibt ...")!!
Bei jedem Durchlauf wird die gelesene Zeile verglichen und dann entsprechend die Variable "fortschreibung" gesetzt!!
Das heißt, dass hierauf am Ende der Wert steht, der durch den Vergleich der letzten Zeile der Datei entstand!!

Du solltest die while-Schleife einfach abbrechen, wenn Du die gesuchte Zeile gefunden hast!!

Zudem solltest Du den vergleich besser mit "line.equals(...)" durchführen !!

LG aus OS
Klaus
 
Zurück