ocamlでファイルをサイズNに切り捨てる方法は?
Pervasiveに関数が表示されません。最も近いのは「open_trunc」フラグですが、これが何をするのかよくわかりません。
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
あなたは正しいと思います。 open_trunc-書き込み用に名前付きファイルを開き、ファイルの先頭に配置された、そのファイルの新しい出力チャネルを返します。ファイルがすでに存在する場合、ファイルは長さがゼロに切り捨てられます。まだ存在しない場合に作成されます。ファイルを開くことができなかった場合は、Sys_errorを発生させます。
このリンクも参照してください。