Wie kann ich eine Datei mit Java sperren (wenn möglich)

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 diesen zweiten Prozess zumindest benachrichtigen, dass die Datei bereits geöffnet ist? Wird dadurch automatisch eine Ausnahme für den zweiten Prozess ausgelöst, wenn die Datei geöffnet ist (was mein Problem löst), oder muss ich sie im ersten Prozess explizit mit einem 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 Ausführen einiger Berechnungen basierend auf dem Inhalt. Die Verarbeitung 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. Die ReadApp listet den Ordner auf und findet die Dateien A, B, C. Sie öffnet die Datei A und beginnt mit dem Lesen. WriteApp listet den Ordner auf und findet die Dateien A, B, C. Es öffnet die Datei A, sieht, dass sie geöffnet ist (durch eine Ausnahme oder auf welche Weise auch immer) und geht zur Datei B. ReadApp beendet die Datei A und fährt mit der Datei B fort ist offen und fährt mit C fort. Es ist entscheidend, dass WriteApp nicht schreibt, während ReadApp dieselbe Datei liest oder umgekehrt. Sie sind unterschiedliche Prozesse.

Antworten auf die Frage(11)

Ihre Antwort auf die Frage