ディスクファイルを更新する書き込みを行うアプリがありますが、ファイルの以前のバージョンが破損しないように、可能な限り確認したいと思います。
もちろん、ファイルを更新する最も簡単な方法は、次のように書くことです。
(spit "myfile.txt" mystring)
ただし、書き込み中にPC(またはJavaプロセス)が停止した場合、ファイルが破損する可能性はわずかです。
より良い解決策は、おそらく次のように書くことです。
(do (spit "tempfile" mystring)
(.rename (file "tempfile") "myfile.txt")
(delete-file "tempfile"))
これは、ほとんどの場合、単一のストレージデバイスで実行される場合、通常はアトミックであるjavaファイルの名前変更関数を使用します。
ClojureファイルIOについてある程度の知識を持っているClojurianは、これが最善のアプローチであるかどうか、またはディスクファイルを更新する際のファイル破損のリスクを最小限に抑えるためのより良い方法があるかどうかについてアドバイスがありますか?
ありがとう!