中文编程入门(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世界》的文献海洋中畅游无阻,轻松应对各类文献挑战。掌握这两种模式,你将成为真正的知识猎人,无所畏惧地探索每一个未知角落。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# aspose word实现模板方式打印及打印速度慢解决方法

1.引用dll nuget或者网上都有下载的方式。不过都要收费。下载地址:https://files.cnblogs.com/files/rolayblog/Tool.zip?t1713322422&downloadtrue 2.打印模板设计 新建一个doc文档,根据自己的需求画页面。 A、普通文本 在word中需要替换值的地方添…

《2024最新Java面试题及答案(带完整目录)》

获取链接:《2024最新Java面试题及答案(带完整目录)》 更多技术书籍:技术书籍分享,前端、后端、大数据、AI、人工智能... ​ ​ ​ 4.1.9.8. 可重入锁(递归锁) ...........................…

Oracle11.2.0.1,(CVE-2012-1675)漏洞解决方案

1.进入容器停止监听 docker exec -it -u 0 oracle11g bash su - oracle lsnrctl stop listener2.找到监听配置文件位置,修改监听文件 echo $ORACLE_HOMEvi network/admin/listener.ora #在文件底部添加 SECURE_REGISTER_LISTENER (IPC) #启动监听 lsnrctl start …

基于springboot+vue+Mysql的汽车租赁系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

idea运行报错:启动命令过长

JAVA项目,运行的时候报错 Command line is too long. Shorten the command line via JAR manifest or via a classpath file and rerun老问题了,记录一下 解决办法: 1、Edit Configurations 2、点击Modify options设置,勾选S…

PlistEdit Pro for Mac激活版:强大的Plist文件编辑工具

PlistEdit Pro for Mac是一款专为Mac用户设计的强大Plist文件编辑工具。Plist文件是苹果公司开发的一种XML文件格式,用于存储应用程序的配置信息和数据。这款软件为用户提供了直观、易用的界面,使编辑和管理Plist文件变得轻松简单。 PlistEdit Pro for M…

C++设计模式|创建型 3.抽象工厂模式

在上一篇文章中介绍了工厂模式,每个具体工厂负责生产一个专门的产品,其代码扩展性很好,这篇文章将介绍抽象工厂模式。 1.为什么要使用抽象工厂模式? 既然已经有了“工厂模式”,那为什么还会有抽象工厂模式呢&#xf…

生成人工智能体:人类行为的交互式模拟论文与源码架构解析(1)——场景故事介绍

生成NPC为交互应用程序创建逼真的人类行为模拟。在这项工作中,我们通过将二十五个NPC放置在一个沙盒环境中(类似于The Sims,模拟人生),展示了生成NPC的能力。用户可以观察和干预NPC的日常计划、分享新闻、建立关系以及…

就业班 第三阶段(ansible) 2401--4.16 day2 ansible2 剧本+角色

六、Ansible playbook 简介 playbook 是 ansible 用于配置,部署,和管理被控节点的剧本。   通过 playbook 的详细描述,执行其中的一系列 tasks ,可以让远端主机达到预期的状态。playbook 就像 Ansible 控制器给被控节点列出的的…

广东海洋大学成功部署(泰迪智能科技)大数据人工智能实验室建设

广东海洋大学简称广东海大,坐落于广东省湛江市,是国家海洋局与广东省人民政府共建的省属重点建设大学、广东省高水平大学重点学科建设高校、粤港澳高校联盟成员 ,入选卓越农林人才教育培养计划,是教育部本科教学水平评估优秀院校。…

odoo添加自定义网页---添加模块图标

1.新建一个模块 python odoo-bin scaffold test_web <路径> 2.我们需要修改一下几个文件 3.web.xml <?xml version"1.0" encoding"UTF-8"?> <templates id"template" xml:space"preserve"><t t-name"T…

详解汽车交流充电桩主板的四大版本

近年来&#xff0c;在电动汽车行业快速发展背景下&#xff0c;充电桩的建设变得愈发重要&#xff0c;特别是兼容性较高、适用性较广的交流充电桩。 交流充电桩的心脏——主板的设计与功能&#xff0c;对于充电桩的性能和用户体验起着至关重要的作用。目前&#xff0c;市面上的…

康谋技术 | 深入探讨:自动驾驶中的相机标定技术

随着自动驾驶技术的快速发展&#xff0c;多传感器的数据采集和融合可以显著提高系统的冗余度和容错性&#xff0c;进而保证决策的快速性和正确性。在项目开发迭代过程中&#xff0c;传感器标定扮演着至关重要的角色&#xff0c;它位于数据采集平台与感知融合算法之间&#xff0…

如何使用自定义Promptbooks优化您的安全工作流程

在当今的数字化时代&#xff0c;安全工作流程的优化变得前所未有的重要。安全团队需要快速、有效地响应安全事件&#xff0c;以保护组织的数据和资产。Microsoft Copilot for Security提供了一种强大的工具——自定义Promptbooks&#xff0c;它可以帮助安全专家通过自动化和定制…

tmux 命令速查 导图

最近在使用tmux&#xff0c;整理了一份命令的导图&#xff0c;大家需要自取&#xff5e; tmux是什么&#xff1f; Tmux是一个终端复用器&#xff0c;一个非常有用的linux开发工具。 基本概念 会话&#xff1a; 与命令下的终端窗口类似&#xff1b;tmux进程&#xff0c;可包…

SpringBoot整合Swagger2

SpringBoot整合Swagger2 1.什么是Swagger2&#xff1f;&#xff08;应用场景&#xff09;2.项目中如何使用2.1 导入依赖2.2 编写配置类2.3 注解使用2.3.1 controller注解&#xff1a;2.3.2 方法注解2.3.3 实体类注解2.3.4 方法返回值注解2.3.5 忽略的方法 3.UI界面 1.什么是Swa…

短视频矩阵系统----技术源头开发

短视频矩阵系统--- 1. 确定账号类型和目标受众 2. 准备账号资料 3. 搭建系统框架 4. 开发核心功能 5. 测试和调试 6. 部署和维护 7. 推广和运营 在开发短视频账号矩阵系统源码时&#xff0c;可以使用一些开源框架和工具来提高开发效率和降低开发难度。同时&#xff0c;需要组…

抓取电商产品数据的方法|PHP|Python多语言环境|高并发需求|电商商品API接口数据采集

电商商品数据的抓取|电商平台商品API接口 客户在搭建电商网站时经常提出的诉求和相应的解决方案如下&#xff1a; 1. **网站设计和用户体验**&#xff1a; - 诉求&#xff1a;希望有吸引力、易用性强的网站设计&#xff0c;提升用户体验。 - 解决方案&#xff1a;设计专…

无人机--行业生命周期分析

行业生命周期:无人机行业生命周期还相对较短&#xff0c;但已经经历了多个阶段的发展。从最初的军用无人机&#xff0c;到近年来民用无人机和商业无人机的快速发展&#xff0c;无人机行业正逐渐走向成熟阶段。未来随着技术的不断进步和应用领域的不断拓展&#xff0c;无人机行业…

项目7-音乐播放器5+注册账号

1.前端代码 MAPPER Insert("insert into user(username,password) values (#{username},#{password}) ")Integer insertUserInfo(String username,String password); Service public Result insertUserInfo(String username, String oldpassword,String newpasswo…