2012-03-29 66 views
6

我正在嘗試寫入然後將變量讀取到文件中。該變量來自我創建的數據類型。向Ocaml中的文件寫入和讀取自定義變量

如果幫助:

鍵入sys =字符串*字符串列表的 文件|字符串的文件夾* SYS列表;;

我該怎麼辦這個? 我一直在閱讀關於fprintf的使用,但是對於我所得到的東西,它不得不首先被轉換成字符串,對嗎?

回答

7

如果你確定你的類型不會改變,你可以使用和output_valuePervasives

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 

read_sys將打破時,你會試圖讀取存儲與sys的其他版本值(或者,如果你改變寫作和閱讀之間的OCaml的版本)。

如果您想要安全,可以使用自動串行器(例如sexplib)(如果您希望能夠讀取正在創建的文件)或biniou以實現高效轉換。

+0

好吧,至少目前來說,這樣做會很好。 非常非常感謝! – EBM 2012-03-29 23:14:57

+0

@EBM:如果這篇文章回答你的問題,你應該接受它來幫助未來的訪問者。 – pad 2012-04-04 16:37:51

+0

@pad好的,抱歉,我當時一定忘記了。 – EBM 2012-10-07 19:00:10