file:pwrite/3
在文件的一个指定位置写入数据
用法:
pwrite(IoDevice, LocBytes) -> ok | {error, {N, Reason}}
该方法会在一个操作里执行 file:position/2 和 file:write/2 这两个方法,这比每一次调用更有效率。如果 IoDevice 以 raw 的模式打开,那么会有一些限制出现:参数 Location 只允许是一个整数;在操作执行完后文件的当前位置是被设置为 undefined。
当定位在一个不是 latin1 字符而是其他编码的文件,必须谨慎设置一个正确字符边界的位置,详情看 file:position/2。
下面是在文件位置处的第 N 个数据长度(N * Size)写入数据,如果原先已有旧的数据则会被覆盖。
File = "./file_write.txt", {ok, IoDevice} = file:open(File, [write, raw, binary]), Bin = <<"file:pwrite/2 test\n">>, Size = size(Bin), lists:foreach( fun(N) -> file:pwrite(IoDevice, N * Size, Bin) end, lists:seq(0, 50) ), file:close(IoDevice).