写入文件 Ocaml 中的某个字节/位置



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,尽管我不熟悉确切的语义。

最新更新