File.renameTo(File)

takidoso

Erfahrenes Mitglied
Hallo und Halli,
also ich arbeite z.Z. mit Solaris und dem guten alten Java 1.4
In dem Programm werden Dateien unteranderem mit renameTo(File) umbenannt was normalerweise prima funktioniert. Natürlich prüfe ich die routine ab ob sie mir auch ein true zurückgeibt und werfe eine Exception wenn diesem nicht so ist.
Nun ist es ein paar mal vorgekommen, dass tatsächlich false zurückgegeben wurde, obgleich ich
  • alle den Ausgabestrohm der Datei schließe
  • null
  • die Datei für die umbenennung immer im selben Verzeichnispfad bestehen bleibt
Merkwürdigerweise hat in den Fällen wo ich es bemerkte die Umbenennung dennoch geklappt, trotz eines retunierten false von File.renameTo(File)
Es handelt sich hierbi um ein ganz gewöhnliches Singlethread-Programm also auch Komplikationen mit Nebenläufigkeit dürften nicht existieren!

Ist über diesbezügliches Verhalten irgendetwas bekannt, Im Netz habe ich leider nicht so arg darüber gefunden?

für Hinweise wäre ich ganz Glücklich

Takidoso
 
Hallo Tom,
danke für den Link, auch wenn er nicht ganz das Phänomen darstellt welches ich greade habe.
also es geht wirklich nu rum die Umbennenung und die Abfrage bezüglich des Rückgabewertes (true/false) manchmal passiert es dass ich ein false zurückbekomme, wenn auch nur in seltenen Fällen. Ich stelle dann aber fest das die Umbenennung doch geklappt hat.
Ich habe inzwischen einen gewissen Verdacht. Diese umbenennung dient dazu das erst nach der Umbenneung eines Files das andere System das ständig über das entsprechend Verzeicnis pollt die Datei abholt und in ein weiteres (internes Eingangsverzeichnis) stellt. Damit vermeidet man, das unfertige Dateien abgeholt werden.
Kann es sein, dass in den seltenen Fällen in den die routine renameTo(File) mir fälschlicehrweise ein false zurückgibt das andere System die Datei in dem Augenblick der Abfrage bzw Bereitstellung des boolean die Datei gemoved hat?
also das renameTo offenbar selbst nochmal auf dem Verzeichnis nachschaut ob die Datei mit diesem neuen Namen vorhanden ist?
Das würde es wenigstens erklären. Allerding hieße das für mich das ich nicht abfragen sollte ob renameTo funktioniert hat oder nicht, oder zumindest nicht mit einer Exception begegnen.

Takidoso
 
Zurück