LPC 语言基础教程:8.1 文件系统 efun 介绍

本文节选自《LPC语言基础教程:从零学习游戏开发》,版权归@mudren,欢迎转载,但必须注明来源(mud.ren)。

LPC中有大量和文件系统相关的外部函数,包括:cpfile_sizeget_dirlinkmkdirread_bytesread_filerenamermrmdirstatwrite_byteswrite_file

还有三个异步操作的函数:async_getdir、async_read、async_write。

还有三个 apply 方法:valid_readvalid_writevalid_link

具体函数说明请点击函数名称转至说明文档。以下是文件操作的代码演示:

int main(object me, string arg)
{
    if (!arg)
    {
        arg = "/u/test";
    }
    // 创建目录
    mkdir(arg);
    // 写入文件
    write_file(arg + "/test", "");
    // 重命名
    rename(arg + "/test", arg + "/test.c");
    // link
    link(arg + "/test.c", arg + "/test1.c");
    // 复制文件
    cp(arg + "/test.c", arg + "/test2.c");
    // get_dir
    printf("%O\n", get_dir(arg));
    // 删除文件
    // rm(arg + "/test.c");
    // rm(arg + "/test1.c");
    // rm(arg + "/test2.c");
    // 删除目录
    // rmdir(arg);

    return 1;
}

需要注意的是rmdir不可删除非空目录,所有文件的读写操作都会通过 valid_readvalid_write 校验是否有权限,而link操作需要valid_link检验是否有权限,关于这三个apply方法的实现可以参考开源的各MUD的MASTER_OB中的代码。

关于文件系统,这里提示一下路径的问题,在FluffOS中,路径默认都是从MUD的根目录开始,对efun中涉及到文件路径的你不需要加/(MUD中大家还是习惯都是/开头),另外get_dir("")get_dir("/")get_dir(".")也都是代表根目录。

WWW

FluffOS v2019支持websocket,内置了HTTP服务,通过websocket端口访问的是www目录,所以利用文件操作相关函数,可以实时的在www下生成网页实现一些WEB服务,也可以通过external_cmd调用系统指令生成图片验证码让玩家查看。

京ICP备13031296号-4