Ocaml 如何实施";附录文件";功能?

Ocaml 如何实施";附录文件";功能?,ocaml,Ocaml,我可以使用以下功能覆盖文本文件: let writeFile ~filename:fn s = let oc = open_out fn in output_string oc s; close_out oc ;; 但是,我不知道如何在文本文件中添加一行?我就是这么做的: let append_string path s = let chan = open_out_gen [Open_wronly; Open_creat] 0o666 path in let l

我可以使用以下功能覆盖文本文件:

let writeFile ~filename:fn s =
let oc = open_out fn in
    output_string oc s;
    close_out oc ;;
但是,我不知道如何在文本文件中添加一行?

我就是这么做的:

let append_string path s =
    let chan = open_out_gen [Open_wronly; Open_creat] 0o666 path
    in let len = out_channel_length chan
    in
        begin
        seek_out chan len;
        output_string chan s;
        close_out chan;
        end

您可以将附加模式标志
Open\u append
传递到
Open\u out\u gen
功能:

let _ =
    let oc = open_out_gen [Open_creat; Open_text; Open_append] 0o640 "a.txt" in
    output_string oc "append\n";
    close_out oc

好主意。我不确定语义是什么,但似乎
Open\u append
只是为您查找文件的结尾。(我想它可能使用Unix
O_APPEND
,这会导致每次写入都附加到文件中,无论文件位置在哪里。)哎呀,我的测试错了
Open\u append
会导致每次写入都附加到文件中。所以你应该小心地使用它,只有当你真正想这样做的时候。关于,@JeffreyScofield:你说得对,如果在
append
模式下打开文件(与c中的
fopen
相同)。(从技术上讲,在c中,如果在a+模式下打开文件,你可以进行读取,但写入仍然会进行到底。不过,OCaml中没有更新模式。)