Hey Java-Community!
Ich habe vor kurzem eine Client-Server-Kommunikation gebastelt, in der der Client dem Server einen String zukommen lässt.
'Lauschen', Empfangen und Lesen habe ich wiefolgt gelöst:
Nun möchte ich den empfangenen String meiner log-Datei hinzufügen. Überlegt hatte ich mir, dass ich das Textdokument auslese, in einen String auslagere und anschließend mit dem frisch dazugekommenen String wieder einfüge. Bis zu diesem Punkt läuft alles ganz gut, nur möchte ich, dass die immer neu empfangenen Strings mit einem Zeilenumbruch in eine neue Zeile geschrieben werden(, und nicht wie im Moment, dass es einfach fortan auf der ersten Zeile geschrieben wird.)
Hier die "logger();" Methode:
Ich habe hier schon eigentlich überall versucht einen Zeilenumbruch einzubauen, allerdings werden dann nur der letzte empfangene String und der neue (auf zwei Zeilen) geschrieben.
Wie kann ich mein oben beschriebenes Problem mittels diesem Aufbau lösen? Oder gibt es vielleicht einen anderen, möglicherweise einfacheren Weg zum Ziel zu kommen?
Vielen Dank an alle!
Mit freundlichen Grüßen
Kevin W.
Ich habe vor kurzem eine Client-Server-Kommunikation gebastelt, in der der Client dem Server einen String zukommen lässt.
'Lauschen', Empfangen und Lesen habe ich wiefolgt gelöst:
Java:
while(true){
Socket listen = server.accept();
InputStreamReader PortLeser = new InputStreamReader(listen.getInputStream());
BufferedReader eingabe = new BufferedReader(PortLeser);
String s = eingabe.readLine();
System.out.println("Client# " + s);
logger(s /*+lineSeparator*/); //Die Methode zum Verarbeiten des Strings - Dem Textdokument hinzufügen
}
Hier die "logger();" Methode:
Ich habe hier schon eigentlich überall versucht einen Zeilenumbruch einzubauen, allerdings werden dann nur der letzte empfangene String und der neue (auf zwei Zeilen) geschrieben.
Java:
@SuppressWarnings({"unused", "resource"})
public static void logger(String logContent){
String input = "";
String line = "";
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(logFilePATH.toFile()));
while((line = br.readLine()) != null) {
input = line;
}
} catch (FileNotFoundException e) {
System.out.println("Server# Die LogFile konnte nicht gefunden werden!");
e.printStackTrace();
} catch (IOException e) {
System.out.println("Server# Es ist ein Fehler während des Auslesens der LogFile aufgetreten!");
e.printStackTrace();
} finally {
if(br != null) {
try {
br.close();
} catch(IOException e) {
System.out.println("Server# Es ist ein Fehler aufgetreten!");
e.printStackTrace();
}
}
}
try (FileOutputStream fos = new FileOutputStream(logFilePATH.toFile())) {
FileWriter fw = new FileWriter(logFilePATH.toFile());
BufferedWriter text = new BufferedWriter(fw);
PrintWriter writer = new PrintWriter(logFilePATH.toFile());
writer.write(input);
writer.append(logContent);
writer.close();
} catch (IOException e) {
System.out.println("Server# Es ist ein Fehler während des Schreibens in die LogFile aufgetreten!");
e.printStackTrace();
}
}
Wie kann ich mein oben beschriebenes Problem mittels diesem Aufbau lösen? Oder gibt es vielleicht einen anderen, möglicherweise einfacheren Weg zum Ziel zu kommen?
Vielen Dank an alle!
Mit freundlichen Grüßen
Kevin W.