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
Mirko Geschrieben 4. Februar 2002 Geschrieben 4. Februar 2002 hast du mal geguckt, ob in "host" auch was drinsteht??
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.
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...
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?
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.
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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden