Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Warum geht das nicht?

Empfohlene Antworten

Veröffentlicht

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 :(

hast du mal geguckt, ob in "host" auch was drinsteht??

Ja, habe ich, ich habe mir die mal ausgeben lassen (mit System.out.println) hat auch funktioniert.

So, ich habe nun die Variable host durch einen String ersetzt ("Test"), wurde aber auch nicht geschrieben... :(

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?

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.

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.