【发布时间】:2012-04-13 15:32:28
【问题描述】:
我正在尝试将变量写入文件,然后再将其读取。该变量来自我创建的数据类型。
(如果有帮助:
类型 sys = 字符串文件 * 字符串列表 | string * sys list的文件夹;;
)
我该怎么做? 我一直在阅读有关 fprintf 的使用,但就我所知,它必须先以某种方式转换为字符串,对吧?
【问题讨论】:
标签: ocaml
我正在尝试将变量写入文件,然后再将其读取。该变量来自我创建的数据类型。
(如果有帮助:
类型 sys = 字符串文件 * 字符串列表 | string * sys list的文件夹;;
)
我该怎么做? 我一直在阅读有关 fprintf 的使用,但就我所知,它必须先以某种方式转换为字符串,对吧?
【问题讨论】:
标签: ocaml
如果您确定您的类型不会改变,您可以使用 Pervasives 中的 input_value 和 output_value。
let write_sys sys file =
let oc = open_out file in
output_value oc sys;
close_out oc
let read_sys file =
let ic = open_in file in
let sys : sys = input_value ic in
close_in ic;
sys
每当您尝试读取使用其他版本的 sys 存储的值时(或者如果您在写入和读取之间更改您的 OCaml 版本),read_sys 就会中断。
如果您想要安全,您可以使用自动序列化程序,例如sexplib(如果您希望能够读取您正在创建的文件)或biniou 进行高效转换。
【讨论】: