module Out_channel: Out_channel
typet =
out_channel
输出通道的类型。
typeopen_flag =
open_flag
=
| |
Open_rdonly |
(* | 打开以供读取。 | *) |
| |
Open_wronly |
(* | 打开以供写入。 | *) |
| |
Open_append |
(* | 打开以供追加:始终写入文件末尾。 | *) |
| |
Open_creat |
(* | 如果文件不存在,则创建文件。 | *) |
| |
Open_trunc |
(* | 如果文件已存在,则清空文件。 | *) |
| |
Open_excl |
(* | 如果 Open_creat 并且文件已存在,则失败。 | *) |
| |
Open_binary |
(* | 以二进制模式打开(无转换)。 | *) |
| |
Open_text |
(* | 以文本模式打开(可能执行转换)。 | *) |
| |
Open_nonblock |
(* | 以非阻塞模式打开。 | *) |
用于 Out_channel.open_gen
的打开模式。
val stdout : t
进程的标准输出。
val stderr : t
进程的标准错误输出。
val open_bin : string -> t
打开指定文件以供写入,并返回该文件上的一个新的输出通道,该通道位于文件的开头。如果文件已存在,则文件将被截断为零长度。如果文件不存在,则创建文件。
val open_text : string -> t
与 Out_channel.open_bin
相同,但文件以文本模式打开,因此换行符转换将在写入期间发生。在不区分文本模式和二进制模式的操作系统上,此函数的行为与 Out_channel.open_bin
相同。
val open_gen : open_flag list -> int -> string -> t
open_gen mode perm filename
打开指定文件以供写入,如上所述。额外的参数 mode
指定打开模式。额外的参数 perm
指定文件权限,以防必须创建文件。 Out_channel.open_text
和 Out_channel.open_bin
是此函数的特例。
val with_open_bin : string -> (t -> 'a) -> 'a
with_open_bin fn f
在文件 fn
上打开一个通道 oc
,并返回 f
。在
ocf
返回后,无论是通过值还是通过引发异常,oc
都保证被关闭。
val with_open_text : string -> (t -> 'a) -> 'a
类似于 Out_channel.with_open_bin
,但通道以文本模式打开(参见 Out_channel.open_text
)。
val with_open_gen : open_flag list -> int -> string -> (t -> 'a) -> 'a
类似于 Out_channel.with_open_bin
,但可以指定打开模式和文件权限,以防必须创建文件(参见 Out_channel.open_gen
)。
val close : t -> unit
关闭给定通道,刷新所有缓冲的写入操作。输出函数在应用于已关闭的输出通道时会引发 Sys_error
异常,除了 Out_channel.close
和 Out_channel.flush
,它们在应用于已关闭的通道时不会执行任何操作。请注意,Out_channel.close
可能会在操作系统在刷新或关闭时发出错误信号时引发 Sys_error
。
val close_noerr : t -> unit
与 Out_channel.close
相同,但忽略所有错误。
val output_char : t -> char -> unit
在给定输出通道上写入字符。
val output_byte : t -> int -> unit
在给定输出通道上写入一个 8 位整数(作为具有该代码的单个字符)。给定的整数将取模 256。
val output_string : t -> string -> unit
在给定输出通道上写入字符串。
val output_bytes : t -> bytes -> unit
在给定输出通道上写入字节序列。
val output : t -> bytes -> int -> int -> unit
output oc buf pos len
将 len
个字符从字节序列 buf
写入给定输出通道 oc
,从偏移量 pos
开始。
Invalid_argument
,如果 pos
和 len
未指定 buf
的有效范围。val output_substring : t -> string -> int -> int -> unit
与 Out_channel.output
相同,但将字符串作为参数而不是字节序列。
val output_bigarray : t ->
('a, Bigarray.int8_unsigned_elt, Bigarray.c_layout)
Bigarray.Array1.t -> int -> int -> unit
与 Out_channel.output
相同,但从大数组中获取数据。
val flush : t -> unit
刷新与给定输出通道关联的缓冲区,执行该通道上所有待处理的写入操作。交互式程序必须注意在适当的时间刷新标准输出和标准错误。
val flush_all : unit -> unit
刷新所有打开的输出通道;忽略错误。
val seek : t -> int64 -> unit
seek chan pos
将通道 chan
的当前写入位置设置为 pos
。这仅适用于普通文件。对于其他类型的文件(如终端、管道和套接字),行为未定义。
val pos : t -> int64
返回给定通道的当前写入位置。不适用于使用 Open_append
标志打开的通道(返回未定义的结果)。
对于在 Windows 下以文本模式打开的文件,返回的位置是近似的(由于换行符转换);特别是,使用 Out_channel.pos
保存当前位置,然后使用 Out_channel.seek
返回此位置将不起作用。要使此编程习惯用法可靠且可移植,文件必须以二进制模式打开。
val length : t -> int64
返回打开给定通道的普通文件的大小(字符数)。如果通道是在非普通文件上打开的,则结果毫无意义。
val set_binary_mode : t -> bool -> unit
set_binary_mode oc true
将通道 oc
设置为二进制模式:输出期间不会发生任何转换。
set_binary_mode oc false
将通道 oc
设置为文本模式:根据操作系统,输出期间可能会发生一些转换。例如,在 Windows 下,换行符将从 \n
转换为 \r\n
。
此函数对不区分文本模式和二进制模式的操作系统没有影响。
val is_binary_mode : t -> bool
is_binary_mode oc
返回通道 oc
是否处于二进制模式(参见 Out_channel.set_binary_mode
)。
val set_buffered : t -> bool -> unit
set_buffered oc true
将通道 oc
设置为缓冲模式。在此模式下,在 oc
上输出的数据将被缓冲,直到内部缓冲区已满或调用函数 Out_channel.flush
或 Out_channel.flush_all
为止,此时它将被发送到输出设备。
set_buffered oc false
将通道 oc
设置为非缓冲模式。在此模式下,在 oc
上输出的数据将立即发送到输出设备。
默认情况下,所有通道都以缓冲模式打开。
val is_buffered : t -> bool
is_buffered oc
返回通道 oc
是否已缓冲(参见 Out_channel.set_buffered
)。
val isatty : t -> bool
isatty oc
如果 oc
指向终端或控制台窗口,则为 true
,否则为 false
。
写入文件内容
let write_file file s =
Out_channel.with_open_bin file
(fun oc -> Out_channel.output_string oc s))