当前位置: 首页 > news >正文

Lua(文件I/O)

Lua 文件 I/O 操作

Lua 提供了文件 I/O 操作的多种方法,包括简单模式和完全模式。文件操作通常涉及打开文件、读取内容、写入内容以及关闭文件。

简单模式

简单模式适用于基本的文件操作,通常使用 io.input()io.output() 来设置默认的输入输出文件。

打开文件

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

读取文件

content = file:read("*a")  -- 读取整个文件内容
print(content)

写入文件

file = io.open("test.txt", "w")  -- 以写入方式打开文件
file:write("Hello, Lua!")  -- 写入内容
file:close()  -- 关闭文件

关闭文件

file:close()  -- 显式关闭文件

完全模式

完全模式提供了更多的控制,可以直接调用文件对象的方法。

打开文件

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

逐行读取

for line in file:lines() doprint(line)
end

文件定位

file:seek("set", 0)  -- 将文件指针移动到开头
pos = file:seek()    -- 获取当前文件指针位置
print(pos)

文件打开模式
  • "r":只读模式(默认)。
  • "w":写入模式,覆盖已有文件。
  • "a":追加模式,在文件末尾写入。
  • "r+":读写模式,文件必须存在。
  • "w+":读写模式,覆盖已有文件。
  • "a+":读写模式,在文件末尾追加。
文件读取选项
  • "*n":读取一个数字。
  • "*a":读取整个文件内容。
  • "*l":读取一行(默认)。
  • number:读取指定字节数。
示例:复制文件
local src = io.open("source.txt", "r")
local dst = io.open("destination.txt", "w")dst:write(src:read("*a"))src:close()
dst:close()

错误处理

文件操作可能因权限或文件不存在而失败,建议使用 assert 或检查返回值。

local file, err = io.open("nonexistent.txt", "r")
if not file thenprint("Error:", err)
else-- 文件操作file:close()
end

注意事项

  • 文件操作完成后必须关闭文件,避免资源泄漏。
  • 在写入模式下打开文件会清空原有内容,需谨慎使用。
  • 使用 io.lines 可以更简洁地逐行读取文件:
for line in io.lines("test.txt") doprint(line)
end

高级文件操作

临时文件

local temp = os.tmpname()  -- 生成临时文件名
local file = io.open(temp, "w")
file:write("Temporary data")
file:close()
os.remove(temp)  -- 删除临时文件

文件属性检查

function file_exists(name)local f = io.open(name, "r")if f ~= nil thenio.close(f)return trueelsereturn falseend
end

通过以上方法,可以灵活地处理文件读写操作,并根据需求选择合适的模式。

http://www.lryc.cn/news/598358.html

相关文章:

  • VB解除excel保护工作表
  • 【docker】将已有mysql脚本导入镜像内使用
  • API安全监测工具:数字经济的免疫哨兵
  • Linux服务器安全自动化审计实战:一键扫描账户/网络/进程/计划任务风险(附开源脚本)
  • 项目——在线五子棋对战
  • pyarmor加密源代码
  • 闲庭信步使用图像验证平台加速FPGA的开发:第三十三课——车牌识别的FPGA实现(5)车牌字符的识别
  • OpenCV —— contours_matrix_()_[]
  • 删除排序数组中的重复项
  • 微服务的编程测评系统6-管理员登录前端-前端路由优化
  • 一文说清楚Hive中常用的聚合函数[collect_list]
  • 亿级流量短剧平台架构演进:高并发场景下的微服务设计与性能调优
  • Matplotlib详细教程(基础介绍,参数调整,绘图教程)
  • IO密集型、CPU密集型、负载、负载均衡
  • 校园英语杂志《校园英语》杂志社校园英语编辑部2025年第15期目录
  • 考研初试专业分146!上岸新疆大学!信号与系统考研经验,通信考研小马哥。
  • GitHub Actions打包容器,推送 AWS ECR 并使 EKS 自动拉取以完成发版部署
  • Redis数据类型与内部编码
  • Webpack配置原理
  • MongoDB 和 Elasticsearch(ES)区别
  • Windows 下配置 GPU 用于深度学习(PyTorch)的完整流程
  • matrix-breakout-2-morpheus靶场通过
  • 基于深度学习的胸部 X 光图像肺炎分类系统(二)
  • 小架构step系列24:功能模块
  • Android中compileSdk,minSdk,targetSdk的含义和区别
  • M3295NL专为千兆以太网设计,支持100/1000Mbps全双工通信M3295支持4对5类UTP电缆
  • SparkSQL 子查询 IN/NOT IN 对 NULL 值的处理
  • 数据结构 堆(3)---堆排序
  • 在 Windows 上安装设置 MongoDB及常见问题
  • 多源信息融合智能投资【“图神经网络+强化学习“的融合架构】【低配显卡正常运行】