Как обрезать файл до размера N в ocaml?Обрезать файл в ocaml
Я не вижу функции в Pervasive. Ближайшим является флаг open_trunc, который я не совсем уверен, что он делает.
Как обрезать файл до размера N в ocaml?Обрезать файл в ocaml
Я не вижу функции в Pervasive. Ближайшим является флаг open_trunc, который я не совсем уверен, что он делает.
Если вы находитесь под 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
. "
Я думаю, что вы правы. open_trunc -Откройте именованный файл для записи и верните новый выходной канал в этот файл, расположенный в начале файла. Файл обрезается до нулевой длины, если он уже существует. Он создается, если он еще не существует. Raise Sys_error если файл не открывается.
Ссылка на эту ссылку: also.
Возможности ОС Pervasives примерно соответствуют тому, что вы можете сделать в стандартном C. Нет функции для обрезания файла до указанной длины в стандартном C, все, что вы можете сделать, это обрезать файл, который будет пустым при открытии он (отображается через флаг Open_trunc
). Есть один в Unix/POSIX (truncate
), поэтому найдите его в Unix
module, у которого есть функция truncate
(или ftruncate
для открытого файла, опять же после Unix/POSIX).