当前位置: 首页 > 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.dtcms.com/a/296131.html

相关文章:

  • Claude4、GPT4、Kimi K2、Gemini2.5、DeepSeek R1、Code Llama等2025主流AI编程大模型多维度对比分析报告
  • PHP 与 Vue.js 结合的前后端分离架构
  • 虚拟机导入导出ova文件
  • Nginx 运维实战:动静分离,加速静态资源访问!
  • vue3:十八、内容管理-搜索栏的完善
  • C++之Stack和Queue的常用函数+习题
  • 若依框架在 IDEA 中运行的前置软件环境配置指南
  • XORM完全指南:Go语言数据库操作从入门到进阶
  • DS18B20扩展:在数码管上显示温度时包含小数部分
  • 黑马点评系列问题之p44实战篇商户查询缓存 jmeter如何整
  • 【基础】go基础学习笔记
  • OpenCV —— 绘制图形
  • 实验研究 | VR虚拟现实环境中植物景观偏好与生理恢复性效益研究
  • linux端 RAGflow超详细小白教程(一)安装及环境搭建
  • Linux系统编程——网络
  • 河南萌新联赛2025第(二)场:河南农业大学(整除分块,二进制,树的搜索)
  • C++ explicit 上下文相关转换
  • 牛客多校04L :Ladder Challenge
  • 基于MASAC算法的建筑群需求响应系统设计与实现
  • 个人电脑 LLMOps 落地方案
  • pytest官方Tutorial所有示例详解(二)
  • 【AI】Java生态对接大语言模型:主流框架深度解析
  • FastAPI中间件
  • 如何在 conda 中删除环境
  • 常见半导体的介电常数
  • 告别下载中断:深入解析Tomcat JSP中的“远程主机强迫关闭连接”与“软件中止连接”
  • 理解传统部署下 Tomcat 核心组件与请求链路全流程
  • 详解力扣高频 SQL 50 题之584. 寻找用户推荐人【入门】
  • SpringBoot + Thymeleaf 实现模拟登录功能详解
  • SQL173 店铺901国庆期间的7日动销率和滞销率