Ich habe einen Java-Prozess, der eine Datei mit einem FileReader öffnet. Wie kann ich verhindern, dass ein anderer (Java) Prozess diese Datei öffnet, oder zumindest diesen zweiten Prozess benachrichtigen, dass die Datei bereits geöffnet ist? Wird dadurch der zweite Prozess automatisch eine Ausnahme erhalten, wenn die Datei geöffnet ist (was mein Problem löst), oder muss ich sie im ersten Prozess explizit mit einer Art Flag oder Argument öffnen?
Zu klären:
Ich habe eine Java-App, die einen Ordner auflistet und jede Datei in der Liste zur Verarbeitung öffnet. Es verarbeitet jede Datei nach der anderen. Die Verarbeitung jeder Datei besteht aus dem Lesen und einigen Berechnungen basierend auf dem Inhalt. Sie dauert ca. 2 Minuten. Ich habe auch eine andere Java-App, die das Gleiche tut, aber stattdessen in die Datei schreibt. Ich möchte, dass diese Apps gleichzeitig ausgeführt werden können, damit das Szenario so aussieht. ReadApp listet den Ordner auf und findet die Dateien A, B, C. Es öffnet die Datei A und startet das Lesen. WriteApp listet den Ordner auf und findet die Dateien A, B, C. Es öffnet die Datei A, sieht, dass sie geöffnet ist (ausnahmsweise oder auf welche Weise auch immer) und wechselt zu Datei B. ReadApp beendet Datei A und fährt mit B fort. Es sieht, dass dies der Fall ist ist offen und fährt mit C fort. Es ist entscheidend, dass WriteApp dies nicht tut. t Schreiben, während ReadApp dieselbe Datei liest oder umgekehrt. Sie sind verschiedene Prozesse.