lua入门(4) - 文件IO

参考自  

Lua 文件 I/O | 菜鸟教程 (runoob.com)

打开文件常用操作:

file = io.open (filename [, mode])

mode

 lua I/O 的两种模式

Lua I/O 库用于读取和处理文件。分为简单模式(和C一样)、完全模式。

  • 简单模式(simple model)拥有一个当前输入文件和一个当前输出文件,并且提供针对这些文件相关的操作。
  • 完全模式(complete model) 使用外部的文件句柄来实现。它以一种面对对象的形式,将所有的文件操作定义为文件句柄的方法

简单模式在做一些简单的文件操作时较为合适。但是在进行一些高级的文件操作的时候,简单模式就显得力不从心。例如同时读取多个文件这样的操作,使用完全模式则较为合适。

 简单模式

操作对象 - test.lua 

进行操作 - case.lua

 结果演示

完全模式

通常我们需要在同一时间处理多个文件。我们需要使用 file:function_name 来代替 io.function_name 方法

-- 以只读方式打开文件
file = io.open("test.lua", "r")

-- 输出文件第一行
print(file:read())

-- 关闭打开的文件
file:close()

-- 以附加的方式打开只写文件
file = io.open("test.lua", "a")

-- 在文件最后一行添加 Lua 注释
file:write("--test")

-- 关闭打开的文件
file:close()

 实现功能类似,相比简单模式少了 io.input() 和 io.output() ,还支持同时处理多个文件。

io 的其他操作

seek - 光标位置定位

file:seek(optional whence, optional offset): 设置和获取当前文件位置,成功则返回最终的文件位置(按字节),失败则返回nil加错误信息。参数 whence 值可以是:

  • "set": 从文件头开始
  • "cur": 从当前位置开始[默认]
  • "end": 从文件尾开始
  • offset:默认为0

line  -  读取一行

io.lines(optional file name): 打开指定的文件 filename 为模式并返回一个迭代函数,每次调用将获得文件中的一行内容,当到文件尾时,将返回 nil,并自动关闭文件。
若不带参数时io.lines() <=> io.input():lines(); 读取默认输入设备的内容,但结束时不关闭文件

  • flush- 向文件写入缓冲中的所有数据

测试程序

运行结果

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 11:30:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 11:30:02       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 11:30:02       58 阅读
  4. Python语言-面向对象

    2024-07-13 11:30:02       69 阅读

热门阅读

  1. 深入解析BeautifulSoup:Python网页抓取的瑞士军刀

    2024-07-13 11:30:02       20 阅读
  2. Sentinel和hystric的运用详解

    2024-07-13 11:30:02       21 阅读
  3. 如何让代码添加的控件显示出来

    2024-07-13 11:30:02       18 阅读
  4. prompt第四讲-fewshot

    2024-07-13 11:30:02       19 阅读
  5. Netty Websocket SpringBoot Starter

    2024-07-13 11:30:02       22 阅读
  6. 第五十五章 生成的 WSDL 的详细信息 - types

    2024-07-13 11:30:02       21 阅读
  7. 开发指南044-切片编程

    2024-07-13 11:30:02       26 阅读
  8. 触发器练习

    2024-07-13 11:30:02       21 阅读