2012-09-15 2 views
3

Как обрезать файл до размера N в ocaml?Обрезать файл в ocaml

Я не вижу функции в Pervasive. Ближайшим является флаг 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 читает len символов из канала ic, храня их в строке buf, начиная с символом числа pos. Raise End_of_file Если конец файла достигнут до len, символы были прочитаны. Raise Invalid_argument "really_input", если pos и len не обозначают действительную подстроку buf. "

2

Я думаю, что вы правы. open_trunc -Откройте именованный файл для записи и верните новый выходной канал в этот файл, расположенный в начале файла. Файл обрезается до нулевой длины, если он уже существует. Он создается, если он еще не существует. Raise Sys_error если файл не открывается.

Ссылка на эту ссылку: also.

2

Возможности ОС Pervasives примерно соответствуют тому, что вы можете сделать в стандартном C. Нет функции для обрезания файла до указанной длины в стандартном C, все, что вы можете сделать, это обрезать файл, который будет пустым при открытии он (отображается через флаг Open_trunc). Есть один в Unix/POSIX (truncate), поэтому найдите его в Unix module, у которого есть функция truncate (или ftruncate для открытого файла, опять же после Unix/POSIX).

Смежные вопросы