Ich habe in mienem Programm unter anderem einen selbstgeschriebenen Mailclient.
Wie bei einem normalen Mailprogramm gibt es verschiedene Ordner und man kann Mails von einem Ordner in einen anderen verschieben.
Das verschieben mache ich mit File#renameTo was auch zu 95% funktioniert.
Allerdings kommt es unregelmäßig und nicht reproduzierbar dazu das renameTo false zurückliefert.
Auffällig ist das dies fast nur dann passiert wenn ich die Datei unmittelbar vorher geöffnet hatte (um den Inhalt der Mail anzuzeigen) und wenn das verschieben beim ersten mal nicht funktioniert dann geht es die nächsten paar Sekunden (selten bis zu 1 Minute) oft auch nicht.
Ich verschiebe nicht auf andere Partitionen, alle Input- und Outputstreams werden vorher geschlossen und die Datei dürfte auch von keinem anderen Programm verwendet werden (zumindest nicht wissentlich).
Ich komme einfach nicht dahinter wo das Problem liegt, kann es sein dass die Dateien von Java oder Windows nicht sofort freigegeben werden wenn ich close() für einen Stream aufrufe? Oder funkt da vielleicht das Antivirenprogramm dazwischen?
Hat jemand eine Idee?
mfg
Christian
Wie bei einem normalen Mailprogramm gibt es verschiedene Ordner und man kann Mails von einem Ordner in einen anderen verschieben.
Das verschieben mache ich mit File#renameTo was auch zu 95% funktioniert.
Allerdings kommt es unregelmäßig und nicht reproduzierbar dazu das renameTo false zurückliefert.
Auffällig ist das dies fast nur dann passiert wenn ich die Datei unmittelbar vorher geöffnet hatte (um den Inhalt der Mail anzuzeigen) und wenn das verschieben beim ersten mal nicht funktioniert dann geht es die nächsten paar Sekunden (selten bis zu 1 Minute) oft auch nicht.
Ich verschiebe nicht auf andere Partitionen, alle Input- und Outputstreams werden vorher geschlossen und die Datei dürfte auch von keinem anderen Programm verwendet werden (zumindest nicht wissentlich).
Ich komme einfach nicht dahinter wo das Problem liegt, kann es sein dass die Dateien von Java oder Windows nicht sofort freigegeben werden wenn ich close() für einen Stream aufrufe? Oder funkt da vielleicht das Antivirenprogramm dazwischen?
Hat jemand eine Idee?
mfg
Christian