In meiner Ruby on Rails App habe ich eine Routine, die in eine Datei schreibt (über eine Java-Anwendung) und dann die geschriebene Datei liest.Datei schreiben geschieht asynchron?
write_to_file(file.path, data)
read_file(file.path)
Die meiste Zeit funktioniert das gut. Aber manchmal sieht es so aus, als wäre die Datei nicht geschrieben worden, aber es gab auch keine Fehler. Und wenn ich die Routine mit den gleichen Daten wiederhole, hat es jedes Mal funktioniert.
Ich habe begonnen zu denken, ob die Datei schreiben asynchron passiert und die Datei tatsächlich gelesen wird, bevor die Daten auf die Festplatte geschrieben werden. Wäre das möglich?
write_to_file
ruft eine Java-Anwendung über eine Socketverbindung auf, die sich um das Schreiben kümmert. Die Java-Anwendung gibt eine einfache JSON-Zeichenfolge an Rails zurück.
Ich habe nur eine Lösung mit 'Schlaf' hinzugefügt. –
Danke. Ist die 'Datei.lesbar?' Genug? Ich meine, mein Prozess konnte die Datei lesen, aber der Inhalt wurde nicht aktualisiert. Die Java-App ändert eine vorhandene Datei und erstellt keine neue Datei. Soll ich den Zeitstempel der Datei betrachten, um festzustellen, ob die Datei wirklich aktualisiert wurde? – Mika
Hmm .. Die Datei Zeitstempel enthält nur Sekunden. All das kann in einer Sekunde passieren. Und in der Java-App verwendet es Apache POI-Funktionen, um eine Excel-Datei zu aktualisieren. Es kommt also wirklich darauf an, wie POI die Datei speichert. – Mika