2012-03-29 2 views
6

Я пытаюсь написать, а затем прочитать переменную в файл. Переменная - это тип данных, созданный мной.Написание и чтение пользовательской переменной в файл в Ocaml

(Если помогает:

типа SYS = Файл строки * список строк | Папка строки * список SYS ;;

)

Как я могу сделать это? Я читал об использовании fprintf, но за то, что я получил, мне пришлось сначала преобразовать строку в строку, верно?

ответ

7

Если вы уверены, что ваш тип не изменится, вы можете использовать input_value и output_value от Pervasives.

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

+0

@EBM: Если это сообщение отвечает на ваш вопрос, вы должны принять его, чтобы помочь будущим посетителям. – pad

+0

@pad Да, извините, я, должно быть, забыл тогда. – EBM

Смежные вопросы