Ich habe ein Problem mit dem Schreiben von eingehenden Informationen von einem Client zu diesem Programm. Die Daten kommen herein und es wird jede Sekunde von der System.out ausgegeben, aber der FileWriter druckt nur die erste Ausgabezeile ab, als das Programm gestartet wurde. Ich stoppe das Programm manuell und überprüfe die Datei danach. Ich bin mir nicht sicher, was falsch ist, bitte hilf mir.FileWriter schreibt nur die erste Zeile (Append Mode enabled, Java)
import javax.swing.*;
import java.awt.event.KeyEvent;
import java.net.*;
import java.io.*;
import java.sql.SQLException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
public class Server {
public static void main(String[] args) throws IOException, SQLException, ClassNotFoundException {
String msg_received;
FileWriter fw = new FileWriter("HeartData.txt", true);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter out = new PrintWriter(bw);
System.out.println("Waiting for Android client to connect...");
while (true)
{
try
{
ServerSocket server = new ServerSocket(2323);
Socket s = server.accept();
server.close();
InetAddress clientAddress = s.getInetAddress();
System.out.println("Incoming connection from: " + clientAddress.getHostName() + "[" + clientAddress.getHostAddress() + "]");
DataInputStream DIS = new DataInputStream(s.getInputStream());
msg_received = DIS.readUTF();
out.println(msg_received + "," + LocalTime.now() + "," + LocalDate.now());
System.out.printf("Android says: %sat %s%n", msg_received, LocalTime.now());
}
catch (IOException e){e.printStackTrace();}
finally {
out.close();
}
}
}
}
Ausgabe:
für Android-Client Warten ...
Ankommende Verbindung von verbinden: hostname.domain [ipaddress] Android sagt: ETWAS bei 10: 51: 06,013
Bitte nehmen Sie sich etwas Zeit, um Ihren Code lesbarer zu formatieren. Ziehen Sie die mehreren gleichzeitigen Leerzeilen ab und stellen Sie sicher, dass alles idiomatisch eingerückt ist. –
Danke für die Rückmeldung, wie lesbar ist es jetzt? –
Nicht wirklich - schauen Sie sich die Einrückung von 'System.out.println' gegenüber der' while' Schleife an, sowie die mehreren leeren Zeilen am Ende und die vertikalen Klammern, die vertikal ausgerichtet sind, wo einer von ihnen ausgegraben werden soll. Ihre IDE sollte Ihnen helfen, den Code sehr einfach zu formatieren. –