Effizientes Lesen von 65 Datein mit Boolean Werten

Fohnbit

Top Contributor
Hallo!

Ich habe 65 Dateien auf der Platte, die über ein anderes System beschrieben werden.
Text ist immer 0 oder 1

Nun benötige ich den Status aller Dateien in meinem Programm und bei Änderung soll es ausgegeben werden. Also muss ich die Dateien im Loop auslesen:
Java:
boolean in1 = false, inTmp = false;

		BufferedReader br = null;
		while (true) {
			try {
				String sCurrentLine;
				br = new BufferedReader(new FileReader(pfad));
				sCurrentLine = br.readLine();

				if (sCurrentLine.contains("1")) {
					inTmp = true;
				} else {
					inTmp = false;
				}

				if (inTmp != in1) {
					System.out.println(inTmp);
					in1 = inTmp;
				}
				br.close();

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

		}

Hier habe ich schon mal das Problem das beim Zeitgleichen speichern des dritt-Programm und lesen meines Programmes eine Exception kommt (null Pointer).
Das kann ich zwar abfangen, aber ich denk das Lesen ist ineffizient.

Wie könnte man das Lesen optimieren und kann Java die Zahlen 1 und 0 nicht als Boolean interpretieren?

Danke!!
 
Zuletzt bearbeitet:
klar kann das java,
schreib ne methode
Java:
sichtbarkeit boolean interpreter( Datentyp input){
 switch( input){
   case 0:
       return false;
       break;
   case 1:
       return true;
       break;
 }
}
dann bekommst du deine interpretation
 
Vielleicht ist es sinnvoller die Änderungszeiten nachzuschlagen bevor du ein File durchläufst. Das heißt du pollst, ob sich das File geändert hat (mit Metadaten) und erst, wenn du soetwas erkennst öffnest du das File und siehst nach, was sich geändert hat.
 
Hallo!

Leider wird das File irgendwie vom System upgedatet, ohne das das File vom Datum modifiziert wird.
Es ist ein kleines BeagleBone Black Board mit Digitalen Eingängen.

Ich muss es wohl öffnen.
Aber könnte ich das File offen lassen und erneut einlesen? Würde das etwas an Performance bringen?
Inzwischen habe ich noch diese Lösung:
Java:
FileInputStream in = null;
		
		while (true) {
			int value = -1;
			try {
				in = new FileInputStream(pfad);
				value = in.read() - 48;
				switch (value) {
				case 0:
					inTmp = false;
					break;
				case 1:
					inTmp = true;
					break;
				}

				if (inTmp != in1) {
					System.out.println(inTmp);
					in1 = inTmp;
				}
				Thread.sleep(40);

			} catch (Exception e) {
				throw new RuntimeException(e);
			} finally {
				in.close();
			}

		}
 
Nun stell dir vor 65 FileStreams sind gleichzeitig offen, nicht nur das da auch viel kaputt gehen kann, auch die Performance wird extrem leiden. Außerdem is das eine sehr unsaubere Methode dein Problem zu lösen.
 
Zuletzt bearbeitet:

Zurück
Oben