【Lua】 Lua学习笔记(八)

【Lua】 Lua学习笔记(八)Lua Lua 学习笔记 八 lua 文件

大家好,欢迎来到IT知识分享网。

零、相关文章

一、前言

哈喽大家好,我是 FEZ98 ,今天继续系统学习Lua。这个系列是我系统学习Lua语言的学习笔记,我会把遇到的一些比较值得记录与关注的知识写在里面,供自己以后进行回顾。

二、Lua 文件 I/O

Lua I/O 库用于读取和处理文件,其分为简单模式完全模式

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

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

打开文件操作语句如下:

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

(2.1)简单模式

(2.2)完全模式

如果需要在同一时间处理多个文件,需要使用 file:function_name 来代替 io.function_name 方法。
在这里插入图片描述
在这里插入图片描述
其中 io:read() 的参数如下:


  1. “n”: 读取一个数字,根据 Lua 的转换文法,可能返回浮点数或整数。 (数字可以有前置或后置的空格,以及符号。) 只要能构成合法的数字,这个格式总是去读尽量长的串; 如果读出来的前缀无法构成合法的数字 (比如空串,“0x” 或 “3.4e-”), 就中止函数运行,返回 nil。
  2. “i”: 读取一个整数,返回整数值。
  3. “a”: 从当前位置开始读取整个文件。 如果已在文件末尾,返回空串。
  4. “l”: 读取一行并忽略行结束标记。 当在文件末尾时,返回 nil 这是默认格式。
  5. “L”: 读取一行并保留行结束标记(如果有的话), 当在文件末尾时,返回 nil。
    number: 读取一个不超过这个数量字节数的字符串。 当在文件末尾时,返回 nil。 如果 number 为零, 它什么也不读,返回一个空串。 当在文件末尾时,返回 nil。
  6. 格式 "l" 和 "L" 只能用于文本文件。

完全模式的其他方法如下:

  1. file:seek(optional whence, optional offset): 设置及获取基于文件开头处计算出的位置。 设置的位置由 offset 和 whence 字符串 whence 指定的基点决定。基点可以是:
    “set”: 从文件头开始
    “cur”: 从当前位置开始[默认]
    “end”: 从文件尾开始
    当 seek 成功时,返回最终从文件开头计算起的文件的位置。 当 seek 失败时,返回 nil 加上一个错误描述字符串。
    whence 的默认值是 “cur”, offset 默认为 0 。 因此,调用 file:seek() 可以返回文件当前位置,并不改变它; 调用 file:seek(“set”) 将位置设为文件开头(并返回 0); 调用 file:seek(“end”) 将位置设到文件末尾,并返回文件大小。




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

三、Lua 错误处理

Lua 中的错误分为:语法错误和运行错误。

(3.1)语法错误

(3.2)运行错误

(3.3)错误处理

Lua 中可以使用 asserterror 来处理错误。

(3.3.1)assert

assert 首先检查第一个参数,若没问题,assert不做任何事情;否则,assert以第二个参数作为错误信息抛出。

(3.3.2)error

error 语法格式如下:

error(message [, level]) 

Level参数指示获得错误的位置:

  1. Level=1[默认]:为调用error位置(文件+行号)
  2. Level=2:指出哪个调用error的函数的函数
  3. Level=0:不添加错误位置信息

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(3.3.3)pcall

if pcall(function_name,.) then -- 没有错误 else -- 一些错误 end 

(3.3.4)xpcall

debug库提供了两个通用的错误处理函数:

  1. debug.debug:提供一个Lua提示符,让用户来检查错误的原因
  2. debug.traceback:根据调用桟来构建一个扩展的错误消息

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/118430.html

(0)
上一篇 2025-11-13 09:26
下一篇 2025-11-13 09:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信