Cześć, od niedawna próbuję uczyć się javy i mam pewien problem. Napisałem program (z pomocą googla), który sprawdza co 10sekund połączenie z internetem wyrzucając true lub false oraz tworząc log tego co wyrzuci. Problem polega na tym, że po np. godzinie działania programu jest to nieczytelne, jest po prostu za dużo linijek. Chciałbym zrobić, aby wyświetlane wartości np true przez godzinę zostawały w 1 linijce ( z aktualną datą i godziną ), a dopiero zmiana z true na false lub odwrotnie tworzyła nową linijkę. Jest coś takiego możliwe ? Głowiłem się nad tym trochę i nie wiem jak to zrobić ani jak dokładnie wpisać w google żeby znaleźć pomoc.
import java.net.*;
import java.io.*;
import java.util.*;
public class Net {
public static void main(String[] args) {
for (;;) {
GregorianCalendar dziś = new GregorianCalendar();
System.out.printf(" %tc", dziś);
System.out.println(":Podłączony do internetu -> "
+ (testInet("gmail.com") || testInet("google.com") || testInet("amazon.com")));
try (FileWriter fw = new FileWriter("LogNet.txt", true);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter out = new PrintWriter(bw)) {
out.printf("%tc", dziś);
out.println(" :Podłączony do internetu -> "
+ (testInet("gmail.com") || testInet("google.com") || testInet("amazon.com")));
} catch (IOException e) {
}
try {
Thread.sleep(10000); // wykonuj pętle co 10s ( 1000 = 1s )
}
catch (Exception e) {
}
}
}
public static boolean testInet(String site) {
Socket sock = new Socket();
InetSocketAddress addr = new InetSocketAddress(site, 80);
try {
sock.connect(addr, 3000);
return true;
} catch (IOException e) {
return false;
} finally {
try {
sock.close();
} catch (IOException e) {
}
}
}
}