大きなオブジェクトをファイルに書き出し&読み込む
今回扱ったのは、(prn obj) すると 7MB 以上になるオブジェクト
かなり簡単にできるので、アプリケーションのデータ保存に便利かも。
書き出し
db が大きな hash-map オブジェクト
(binding [*print-length* nil *print-level* nil] (with-out-writer "/foo/bar/filename" (prn db)))
binding は、*print-length* などを設定していなければ必要ない。
読み込み
load-file も使えるが、大きなファイルだとエラーになってしまうので、以下のようにする
(def db (read (java.io.PushbackReader. (reader "/foo/bar/filename"))))
use
ともに use が必要
(use '[clojure.contrib.duck-streams :only (reader with-out-writer)])