BMAS Geschrieben 4. Februar 2002 Geschrieben 4. Februar 2002 Ich werde noch verrückt! Ich finde den Fehler einfach nicht! Warum schreibt das Programm nicht in die Datei rein??? Der Quellcode: public HostTransfer(String host) { int rc; try { File fehler = new File("C:\\", "fehler.txt"); FileWriter fw = new FileWriter(fehler); PrintWriter pw = new PrintWriter(fw); rc = NetConnection.getReturnCode(host); //if (rc == 2 || rc == 4) pw.println(host); } catch (IOException p) { System.out.println("Fehler in HostTransfer.class: " + p); } } Ich habe sicher was vergessen, aber ich komme nicht drauf! Die Datei fehler.txt wird erstellt, aber die Hostnamen werden nicht in diese geschrieben... ich gebe mir die Kugel Zitieren
Mirko Geschrieben 4. Februar 2002 Geschrieben 4. Februar 2002 hast du mal geguckt, ob in "host" auch was drinsteht?? Zitieren
BMAS Geschrieben 4. Februar 2002 Autor Geschrieben 4. Februar 2002 Ja, habe ich, ich habe mir die mal ausgeben lassen (mit System.out.println) hat auch funktioniert. Zitieren
BMAS Geschrieben 4. Februar 2002 Autor Geschrieben 4. Februar 2002 So, ich habe nun die Variable host durch einen String ersetzt ("Test"), wurde aber auch nicht geschrieben... Zitieren
BMAS Geschrieben 5. Februar 2002 Autor Geschrieben 5. Februar 2002 Okay, ich weiss es jetzt, was falsch ist (nur wie ich das Problem löse weiss ich noch immer nicht) ich habe in der "Java Developer Connection" nachgeschaut und da war ein Post mit genau diesem Problem. Das ganze liegt an dem daran, dass das Programm als Thread mehrere Male aufgerufen wird, dabei aber immer die selbe Datei öffnet, oder so ähnlich. Weiss jemand wie ich das umgehen kann? Zitieren
Mirko Geschrieben 5. Februar 2002 Geschrieben 5. Februar 2002 hmmm java.io.File hat ne Methode canWrite(), eigentlich müßtest du nur so lange loopen, bis die true zurückgibt. Allerdings mußt du dann noch dafür sorgen, dass am ende des File-Zugriffs auch der Stream geschlossen wird. Das könnte funktionieren - ist allerdings nicht getestet. Oder aber du schreibst dir eine Art "Logger", der dann die Ausgabe übernimmt. Das muss dann ein Singelton sein, damit er auch der einzige ist, der in die Datei schreibt. Zitieren
Hardcoder Geschrieben 13. Februar 2002 Geschrieben 13. Februar 2002 Hast du es schonmal mit einem pw.close() probiert? Es kann sein, dass einer der Streams puffert und dass erst ein flush() benötigt wird, damit er auch was schreibt (wird von close() auch aufgerufen). Oder er benötigt ein EOF, das wird aber erst geschrieben, wenn du close() aufrufst. Beide Probleme kannst du damit erschlagen. (Ausserdem ist es nicht besonders von Vorteil, wenn noch ein Programm schreibend die Datei geöffnet hat.) Gruß und hth Hardi Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.