3

ocamlでファイルをサイズNに切り捨てる方法は?

Pervasiveに関数が表示されません。最も近いのは「open_trunc」フラグですが、これが何をするのかよくわかりません。

4

3 に答える 3

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読み取り、文字番号から文字列に格納します。文字が読み取られる前にファイルの終わりに達した場合に発生します。有効なサブ文字列を指定しない場合に発生します。"lenicbufposEnd_of_filelenInvalid_argument "really_input"poslenbuf

于 2012-09-15T13:37:36.727 に答える
2

あなたは正しいと思います。 open_trunc-書き込み用に名前付きファイルを開き、ファイルの先頭に配置された、そのファイルの新しい出力チャネルを返します。ファイルがすでに存在する場合、ファイルは長さがゼロに切り捨てられます。まだ存在しない場合に作成されます。ファイルを開くことができなかった場合は、Sys_errorを発生させます。

このリンク参照してください。

于 2012-09-15T13:36:53.140 に答える
2

PervasivesのOS機能は、標準Cで実行できる機能にほぼ対応しています。標準Cでは、ファイルを指定された長さに切り捨てる機能はありません。実行できるのは、ファイルを開いたときにファイルを切り捨てて空にすることだけです。Open_truncフラグ)。Unix / POSIX()に1つあるので、関数を持っているモジュールtruncateでそれを探します(または、 Unix / POSIXに続く開いているファイルを探します)。Unixtruncateftruncate

于 2012-09-15T13:37:35.703 に答える