OCaml中是否有与seekp()
等价物?我需要在某些偏移量处在文件中写入字符。
一个utop示例,在文件(Test.data)中的某个位置写入一个字符('A'):
#use "topfind";;
#require "unix";;
open Unix;;
let fd=openfile "Test.data" [O_WRONLY; O_TRUNC; O_CREAT] 0o666;;
let nbBytes=lseek fd 12 Unix.SEEK_SET;;
if nbBytes<>12 then failwith "Unix.lseek";;
let nbChars= write fd "A" 0 1;;
if nbChars<>1 then failwith "Unix.write";;
close fd;;
od -cv Test.data
0000000 A
解释:
- SEEK_SET指示相对于文件开头的位置。
- lseek 的结果从文件的开头偏移 。
- 要倒带文件,您可以使用:
lseek fd 0 Unix.SEEK_SET
。 - 要读取文件的第二个字符,您必须做(读取前):
lseek fd 1 Unix.SEEK_SET
.
可能你正在寻找Unix.lseek
,尽管我不熟悉确切的语义。