2012-09-15 130 views
3

如何在ocaml中將文件截斷爲N大小?在ocaml中截斷文件

我沒有看到普適的功能。最接近的是「open_trunc」標誌,我不確定它的功能。

回答

3

如果你在Unix下,你可以使用

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

它「runcates命名的文件給定大小」。 但是這個函數沒有在OCaml的Windows版本中實現(或者更確切地說,它不是被仿真的)。

如果你是在Windows下,想模仿它,你可能會感興趣的

val really_input : in_channel -> string -> int -> int -> unit 

really_input ic buf pos len讀取通道iclen字符,將它們存儲在字符串buf,起始於字符數pos。提高End_of_file如果在讀取len個字符之前達到文件結尾,則提高Invalid_argument "really_input"如果poslen未指定buf的有效子字符串。

2

我認爲你是正確的。 open_trunc - 打開指定的文件進行寫入,並返回在該文件上一個新的輸出通道,在該文件的開頭positionned。如果該文件已存在,則該文件被截斷爲零。如果它尚不存在,則創建它。如果文件無法打開,請提起Sys_error

請參閱此鏈接also

2

操作系統Pervasives的能力大致相當於你可以在標準下做有沒有函數來截斷文件,以在標準的C指定長度,所有你能做的就是截斷一個文件,當你打開是空的它(通過Open_trunc標誌暴露)。有一個在unix/POSIX(truncate),所以尋找它在Unix module,裏面確實有一個truncate功能(或ftruncate一個打開的文件,再下面Unix/POSIX)。