Ocaml使用换行符打印到文件

Ocaml使用换行符打印到文件,ocaml,Ocaml,我正在尝试将文件内容逐行打印到新文件中。但是,在运行此函数后,仅将输入文件的最后一行写入输出文件 let in_channel = open_in inFile in try while true do let line = input_line in_channel in let oc = open_out outFile in fprintf oc "%s\n" line; close_out oc; don

我正在尝试将文件内容逐行打印到新文件中。但是,在运行此函数后,仅将输入文件的最后一行写入输出文件

let in_channel = open_in inFile in
try
  while true do
    let line = input_line in_channel in
    let oc = open_out outFile in    

    fprintf oc "%s\n" line;  

    close_out oc;              
  done
  with End_of_file ->
    close_in in_channel
我做错了什么?我正在printf语句中输入换行符,所以我很困惑

打开命名文件进行写入,并返回该文件上位于文件开头的新输出通道如果文件已存在,则将其截断为零长度。如果文件不存在,则创建该文件


您在循环中反复调用
open\u out
。对于您读取的每一行,您首先将
outFile
截断回长度0,然后再写入该行。

是否有方法在循环中执行此操作,打印到文件,并将其附加到末尾?循环中的打印部分很好。为什么不简单地将
open\u out
部分移出循环(就像
open\u in
调用在循环之外一样)?它会导致指向.ml文件末尾的“语法错误”,该文件什么都不是。我非常困惑。@Baily你少了一个
进入频道
关闭频道
之间。只是看到了这一点,并没有很遗憾地解决问题。
val open_out : string -> out_channel