Xmake进阶---io 读写

Xmake进阶---io 读写
摘要由CSDN通过智能技术生成

在自定义脚本中,除了 os 模块对应的系统操作之外,还有文件 io 操作也是我们经常需要使用的,比如读写文件数据等等。而 xmake 内部提供的 io 模块是在 lua 原生模块的基础上做了一些改进,比如新增了序列化读写接口,文件锁接口等等,另外还对 unicode 编码也进行了很好的支持。

接下来,我们会逐一介绍下 io 模块中一些比较常用的接口是如何使用的。

读写数据到文件

我们先来简单介绍下 io 模块中最简单方便地读写文件数据的接口操作,不过在此之前,我们还是先来创建一个用于当前实验操作的空工程。

cd Code
xmake create iotest

工程创建完成后,进入 iotest 文件夹,然后编辑 xmake.lua 文件,在编译前通过 io 模块读写 src/main.cpp 源文件,并做一些文本替换处理,然后重新写回后再进行编译。

target("iotest")
    set_kind("binary")
    add_files("src/*.cpp")
    before_build_file(function (target, sourcefile)
        local data = io.readfile(sourcefile)
        if data then
            print("readfile", data)
            data = data:gsub("world", "xmake")
            io.writefile(sourcefile, data)
            print("writefile", data)
        end
    end)

这里我们用到了 io.readfile 和 io.writefile 两个接口来快速的读写指定的文件,这两个接口并不是 lua 原生提供的接口,而是 xmake 为了方便 io 操作,额外封装的接口,可以让大家不必自己去 open 和 close 文件,就能快速读写文件数据,非常的实用。

通过执行 xmake 编译,我们会看到下图的数据内容,另外 main.cpp 中的 world 字符串也确实被替换成了 xmake 字符串。

 

运行 xmake run 继续确认下输出结果是否真的被改写为 hello xmake!,如下图。

 

当然除了快速读写,还可以使用原生的 io.open 接口来读写文件,虽然这样使用起来稍微繁琐些,但也是有一些不可替代的优势,比如对大文件的读写性能会非常的好,毕竟 io.readfile 需要一次性加载到内存,而通过 open 后返回的文件对象去读写可以按行读以及分批写入,极大地减少内存使用。

另外,这样的读写方式也更加的灵活,我们修改 xmake.lua 文件,将里面的读写方式改成使

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

红星星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值