Problem bei Schreiben in Datei

Status
Nicht offen für weitere Antworten.

Tillux

Mitglied
Hallo,

folgendes Programm öffnet 10.000 mal eine Datei im Anfügemodus und schreibt.

Code:
import java.io.FileWriter;
import java.io.IOException;

public class Starter {

	public static void main(String[] args) {

		for (int i=0; i < 10000; i++){

			try {
			    FileWriter out = new FileWriter ("d:\\test.txt", true);
			    out.write("Schreibe Zeile ... "  + args[0] + "\n");
			    out.close();
			} catch (IOException e) {
			    e.printStackTrace();
			}
			
		}
	}
}


Wenn ich das Programm parallel in 2 Kommandoboxen starte werden die Zeilen teilweise nicht vollständig geschrieben.
Weiss jemand, woran das liegen könnte?

Bsp:
Box 1: java Starter 1
Box2: java Starter Programm2

Ausgabe in Datei:
.....
Schreibe Zeile ... 1
Schreibe Zeile ... Programm2
Schreibe Zeile ... 1
Schreibe Zeile ... 1
ogramm2
Schreibe Zeile ... 1
Schreibe Zeile ... Programm2
Schreibe Zeile ... Programm2
Schreibe Zeile ... 1
Schreibe Zeile ... Programm2

...
 
Naja, ich hätte erwartet, daß ein Prozess eine IOException wirft, wenn die Datei gerade von einem anderen Prozess gelockt ist oder das Betriebssystem nur einem Prozess das Schreiben erlaubt...

Hat jemand einen Vorschlag, wie man erreichen kann, daß immer nur 1 Prozess auf die Datei schreiben darf.
 
Wenn beide Prozesse aus einem Programm stammen (also Threads innerhalb deines Programms), dann kannst Du das über Locks erreichen. Wenn Du mit unterschiedlichen Programmen arbeitest, dann wirst Du wahrscheinlich Semaphoren verwenden müssen. Eventuell funktioniert bei Dir auch das direkte Locken von Files über die entsprechenden Java-NIO Klassen.
 
Tillux hat gesagt.:
Naja, ich hätte erwartet, daß ein Prozess eine IOException wirft, wenn die Datei gerade von einem anderen Prozess gelockt ist oder das Betriebssystem nur einem Prozess das Schreiben erlaubt...
Das passiert ja auch. In deinem Fall ist Datei aber offensichtlich nicht gesperrt.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben