在ocaml中截断文件

时间:2012-09-15 12:53:51

标签: file ocaml truncate

如何在ocaml中将文件截断为N大小?

我没有在Pervasive中看到一个功能。最接近的是“open_trunc”标志,我不确定它的作用。

3 个答案:

答案 0 :(得分:3)

如果您使用的是Unix,则可以使用

val Unix.truncate : string -> int -> unit

它“将指定文件”运行到给定大小“。 但是这个功能没有在Windows版本的OCaml中实现(或者更确切地说,它没有被模拟)。

如果您在Windows下并想要模仿它,您可能会对

感兴趣
val really_input : in_channel -> string -> int -> int -> unit

really_input ic buf pos len从频道len中读取ic个字符,将其存储在字符串buf中,从字符编号pos开始。提升End_of_file如果在读取len个字符之前已到达文件末尾。如果Invalid_argument "really_input"pos未指定len的有效子字符串,则引发buf。“

答案 1 :(得分:2)

我认为你是对的。 open_trunc - 打开要写入的命名文件,并在该文件上返回一个新的输出通道,位于文件的开头。如果文件已存在,则文件将被截断为零长度。如果它尚不存在,则创建它。如果无法打开文件,请提高 Sys_error

请参阅此链接also

答案 2 :(得分:2)

Pervasives的操作系统功能大致与标准C中的操作相对应。没有功能可以在标准C中将文件截断为指定的长度,所有可以做的就是在打开文件时将文件截断为空(通过Open_trunc标志暴露)。在Unix / POSIX中有一个(truncate),所以在Unix module中查找它,它具有truncate函数(或ftruncate用于打开文件,关注Unix/POSIX)。