2012-03-29 10 views
6

Estoy tratando de escribir y luego leer una variable en un archivo. La variable es de un tipo de datos creado por mí.Escribir y leer una variable personalizada en un archivo en Ocaml

(Si ayuda:

sys type = Archivo de cadena * lista de cadenas | carpeta de cadena * lista sys ;;

)

¿Cómo puedo hacer ¿esta? He estado leyendo sobre el uso de fprintf, pero por lo que tengo, primero tuvo que convertirse de alguna manera en un String, ¿no?

Respuesta

7

Si está seguro de que su tipo no cambiará, puede usar input_value y output_value desde 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 se romperá cada vez que se intenta leer un valor almacenado con otra versión de sys (o si cambia su versión de OCaml entre la escritura y lectura).

Si desea seguridad, puede usar el serializador automático como sexplib (si desea poder leer el archivo que está creando) o biniou para una conversión eficiente.

+0

De acuerdo, eso estaría bien, al menos por ahora. ¡Muchas gracias! – EBM

+0

@EBM: si esta publicación responde a su pregunta, debe aceptarla para ayudar a los futuros visitantes. – pad

+0

@pad Sí, lo siento, debo haber olvidado en ese momento. – EBM

Cuestiones relacionadas