中文编程入门(Lua5.4.6中文版)第十三章 Lua 文件操作

在《Lua世界》的冒险旅途中,勇士们时常需要与神秘的文本卷轴打交道。为了更好地掌握这些知识宝藏,Lua I/O库提供了两种强大的探索模式:简单模式和完全模式,助你轻松应对各类文献挑战。

简单模式:初识卷轴

简单模式如同一位初级探险家,专注于单个卷轴的研究。它拥有一把指向当前阅读卷轴(输入文件)和一把记录心得(输出文件)的魔法笔。对于简单的文献查阅与笔记记录,简单模式足以胜任。

打开卷轴之门

使用io.open(filename, [mode])咒语开启卷轴。mode的不同字符组合决定了你与卷轴的互动方式:

  • r:只读模式,仅查阅卷轴内容,确保卷轴存在。
  • w:写入模式,清空已有内容,或创建新卷轴。
  • a:追加模式,在卷轴末尾添加记录,保留原有内容。
  • r+:读写模式,查阅并修改现有卷轴,确保卷轴存在。
  • w+:与w类似,但允许同时读取。
  • a+:与a类似,但允许同时读取。
  • b:二进制模式,适用于处理特殊符文(二进制文件)。

简单模式操作实例

在名为file.lua的法术书中,勇士们尝试查阅与增补名为test.lua的卷轴:

  1. 以只读模式打开test.lua

    局部 文件名 = 端口.打开("测试.lua", "r")
  2. 设置当前阅读卷轴为test.lua

    端口.输入(文件名)
  3. 阅读首行文字:

    输出(端口.读取())
  4. 关闭阅读的卷轴:

    端口.关闭(文件名)
  5. 以追加模式打开test.lua

    文件名 = 端口.打开("测试.lua", "a")
  6. 设置当前记录卷轴为test.lua

    端口.输出(文件名)
  7. 在卷轴末尾添加注解:

    端口.写入("-- 测试.lua 文件末尾注解")
  8. 关闭记录的卷轴:

    端口.关闭(文件名)

执行以上法术后,勇士们不仅读取了test.lua首行内容,还在卷轴末尾留下了注解。

完全模式:卷轴大师

对于那些需要同时研读多卷轴、进行精细操作的高级探险家,完全模式宛如一位卷轴大师。它以面向对象的方式,通过掌控特定卷轴的“句柄”,实现对卷轴的各种复杂操作。

完全模式操作实例

完全模式下,勇士们可以直接通过卷轴句柄施展魔法:

  1. 以只读模式打开test.lua

    局部 文件名 = 端口.打开("测试.lua", "r")
  2. 阅读首行文字:

    输出(文件名:读取())
  3. 关闭阅读的卷轴:

    文件名:关闭()
  4. 以追加模式打开test.lua

    文件名 = 端口.打开("测试.lua", "a")
  5. 在卷轴末尾添加注解:

    文件名:写入("-- 测试.lua 文件末尾注解\n")
  6. 关闭记录的卷轴:

    文件名:关闭()

执行以上法术后,同样实现了与简单模式相同的效果。

探索卷轴深处

完全模式还提供了更细致的卷轴探索手段:

  • file:seek([whence], [offset]):定位卷轴指针。whence可选值为"set"(文件头)、"cur"(当前位置,默认)、"end"(文件尾)。offset为偏移量,不指定则返回当前位置。
  • file:flush():立即将缓冲区中的内容写入卷轴,确保记录及时保存。
  • io.lines([filename]):返回一个迭代函数,每次调用获取卷轴中下一行内容,直至末尾返回nil。若不指定filename,默认读取当前输入设备的内容。

实战演练:定位卷轴秘文

以下法术使用seek方法定位到test.lua卷轴倒数第25个字符,并读取剩余全文:

  1. 以只读模式打开test.lua

    局部 文件名 = 端口.打开("测试.lua", "r")
  2. 定位至倒数第25个字符:

    文件名:定位("尾", -25)
  3. 读取剩余全文:

    输出(文件名:读取("a"))
  4. 关闭阅读的卷轴:

    文件名:关闭()

执行完毕,勇士们成功揭示了卷轴深处的秘密文字。

结语

不论是初涉卷轴的初级探险家,还是游刃有余的卷轴大师,Lua I/O库的简单模式与完全模式皆能助你在《Lua世界》的文献海洋中畅游无阻,轻松应对各类文献挑战。掌握这两种模式,你将成为真正的知识猎人,无所畏惧地探索每一个未知角落。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/552861.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何精心挑选合适的软件公司

选择一家合适的软件公司对于小程序商城的开发与运营而言,具有举足轻重的意义。面对市场上琳琅满目的软件公司,如何找到那个真正适合自己的合作伙伴呢?接下来,我们将从需求分析、公司资质、项目案例、服务态度和成本效益五个方面&a…

Linux0.11 源码中的内存分页机制

学习Linux的源码,《深入linux 内核架构》这本书看起来就让人害怕,然后就想着看看早期的linux版本的源码,从网上查看资料发现linux0.11 这个版本有很多人拿来当成教学版本,而且也有很多的参考书以这个版本作为基础来讲解&#xff0…

【数据挖掘】实验8:分类与预测建模

实验8:分类与预测建模 一:实验目的与要求 1:学习和掌握回归分析、决策树、人工神经网络、KNN算法、朴素贝叶斯分类等机器学习算法在R语言中的应用。 2:了解其他分类与预测算法函数。 3:学习和掌握分类与预测算法的评…

UTS iOS插件

1、UTS插件无法出现 再uniapp x中使用时&#xff0c;必须给这个插件高度和宽度&#xff0c;否则出不来&#xff01; <uts-hello-view buttonText"点击按钮内容" style"width:375px;height: 375px;background-color: aqua;"></uts-hello-view>…

关于外网java后端服务访问内网minio中间件,因连接minio超时,启动失败问题

注&#xff1a;服务器情况&#xff1a;2台服务器&#xff0c;内网服务器包含&#xff08;activemq、minio、nginx、redis、mysql、后端java服务&#xff09;。外网服务器只有后端java服务&#xff0c;访问内网的中间件&#xff08;内网服务器开放了部分指定端口&#xff09; 问…

技术速递|.NET 智能组件简介 – AI 驱动的 UI 控件

作者&#xff1a;Daniel Roth 排版&#xff1a;Alan Wang AI 的最新进展有望彻底改变我们与软件交互和使用软件的方式。然而&#xff0c;将 AI 功能集成到现有软件中可能面临一些挑战。因此&#xff0c;我们开发了新的 .NET 智能组件&#xff0c;这是一组真正有用的 AI 支持的 …

无法连接到本地主机上的MySQL服务器???

如果你在连接工具上连接mysql连接&#xff0c;如下 可能是本地数据库没有启动 使用管理员身份打开cmd窗口&#xff0c;输入net start mysql命令&#xff0c;关闭数据库输入命令net stop mysql 然后在打开连接工具连接mysql就可以了

Java之JVM、JUC面试题笔记(持续更新)

CountDownLatch和CyclicBarrier JUC 并发编程_juc并发编程-CSDN博客 java 类加载机制&#xff1f;如何实现自定义类加载器&#xff1f;findClass 与 loadClass 的区别&#xff1f; 在Java中&#xff0c;自定义类加载器通常是通过继承java.lang.ClassLoader类并重写其findClas…

《机器学习by周志华》学习笔记-线性模型-02

1、对数几率回归 1.1、背景 上一节我们考虑了线性模型的回归学习,但是想要做分类任务就需要用到上文中的广义线性模型。 当联系函数连续且充分光滑,考虑单调可微函数,令: 1.2、概念 找一个单调可谓函数,将分类任务的真实标记与线性回归模型的预测值联系起来,也叫做「…

机器学习实验二-----决策树构建

决策树是机器学习中一种基本的分类和回归算法&#xff0c;是依托于策略抉择而建立起来的树。本文学习的是决策树的分类 1. 构建决策树流程 选择算法&#xff1a;常用的算法包括ID3、C4.5、CART等。 划分节点&#xff1a;根据数据特征和算法选择&#xff0c;递归地划分节点&…

鉴源实验室丨智能网联汽车协议模糊测试技术概述

作者 | 乔琪 上海控安可信软件创新研究院工控网络安全组 来源 | 鉴源实验室 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 摘要&#xff1a;随着智能网联汽车的快速发展&#xff0c;其协议安全性和稳定性成为了关注焦点。智能网联汽车协议特点主要表现为…

javaweb http

1、http简介 HTTP 超文本传输协议&#xff08;HTTP-Hyper Text transfer protocol&#xff09;&#xff0c;是一个属于应用层的面向对象的协议&#xff0c;由于其简捷、快速的方式&#xff0c;适用于分布式超媒体信息系统。它于1990年提出&#xff0c;经过十几年的使用与发展&…

【绘图软件】solidworks2022版本安装强制卸载(清理干净版!)全流程~超详细+报错避坑

安装包可以去【盒子部落】下载&#xff0c;也可以用下面网盘直接下载&#xff1a; 夸克网盘链接&#xff1a;https://pan.quark.cn/s/f2c110617bfa&#xff08;无密码&#xff09; 1.解压后进入文件夹 2.进入_SolidSQUAD_文件夹 3.复制SolidWorks_Flexnet_Server文件夹 4.打开C…

MySQL 的事务

事务概念 MySQL事务是一个或者多个的数据库操作&#xff0c;要么全部执行成功&#xff0c;要么全部失败回滚。 事务是通过事务日志来实现的&#xff0c;事务日志包括&#xff1a;redo log和undo log。 事务状态 事务有以下五种状态&#xff1a; 活动的部分提交的失败的中止的…

基于SpringBoot+Vue社区医院服务平台(源码+文档+包运行)

一.系统概述 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了社区医院信息平台的开发全过程。通过分析社区医院信息平台管理的不足&#xff0c;创建了一个计算机管理社区医院信息平台的方案。文章介绍了社区医院信息…

2024Guitar Pro 8.1 Mac 最新下载、安装、激活、换机图文教程

吉他爱好者必备神器&#xff1a;Guitar Pro v8.1.1 Build 17深度解析 随着数字音乐制作和学习的日益普及&#xff0c;越来越多的吉他爱好者开始寻找能够帮助他们提升技能、创作音乐的专业工具。在众多吉他制作软件中&#xff0c;Guitar Pro因其强大的功能和易用的界面备受推崇…

Qt 6子窗口全屏显示

一、全屏显示效果 二、全屏相关函数 1,全屏显示函数 QWidget::showFullScreen(); // 此方法只对顶级窗口有效&#xff0c;对子窗口无效 2&#xff0c;恢复显示函数 QWidget::showNormal(); // 此方法也只对顶级窗口有效&#xff0c;对子窗口无效 3&#xff0c;最小化显示函…

使用Flask和Flask-JWT-Extended保护API免受跨站请求攻击

在本文中&#xff0c;我们将探讨如何使用Flask和Flask-JWT-Extended库来保护您的API免受跨站请求攻击&#xff08;CSRF&#xff09;。我们将首先简要介绍CSRF攻击的概念&#xff0c;然后详细说明如何使用Flask-JWT-Extended库来保护您的API。 什么是跨站请求攻击&#xff08;C…

【C++题解】1565. 成绩(score)

问题&#xff1a;1565. 成绩&#xff08;score&#xff09; 类型&#xff1a;基本运算、小数运算 题目描述&#xff1a; 牛牛最近学习了 C 入门课程&#xff0c;这门课程的总成绩计算方法是&#xff1a; 总成绩作业成绩 20% 小测成绩 30% 期末考试成绩 50%。 牛牛想知道&am…

聊聊应用商城评分4.9的Apipost IDEA插件

Apipost Helper&#xff0c;作为IDEA插件&#xff0c;可以快速生成和查询API文档&#xff0c;直观友好地在IDE中调试接口。它简化了开发流程并提升效率&#xff0c;即使新手也能够迅速掌握。Apipost Helper提供了诸多便捷功能&#xff0c;如通过代码查找接口或者通过接口查找代…