Lua使用相同的底层C实现模型管理文件(此模型也被其他编程语言使用,这是相当常见的).如果您不熟悉这种查看文件的方式,那么术语可能不清楚.

在该模型中,文件表示为具有所谓的当前位置的字节流.当前位置是一种指向文件中第一个字节的概念指针,该字节将由下一个I / O操作读取或写入.当您打开文件进行读取时,会设置一个新流,使其当前位置是文件的开头,即当前位置“指向”文件中的第一个字节.

在Lua中,您通过所谓的文件句柄管理流,这些句柄是底层流的一种中介.使用句柄执行的任何操作都将转移到相应的流.

Lua io.open打开一个文件,将C流与它关联,并返回一个表示该流的文件句柄:

local file_handle = io.open( "myfile.txt" ) -- file opened for reading

因此,如果执行任何读取某些字节的操作(通常解释为字符,如果使用文本文件),则从流中读取这些字节,并且对于每个字节读取,流的当前位置前进1,每次指向下一个要读取的字节.

Lua文档暗示了这个模型.因此,当它表示下一行时,表示输入操作将读取流中从当前位置开始直到找到行尾字符的所有字符.

请注意,如果您将文本文件视为一系列行,则可能会被误导,因为您可以想到“当前行”和“下一行”.与C模型相比,这将是更高级别的模型. C中没有“当前行”.在C文本文件中只有一个字节序列,其中一些特殊字符(行尾字符)经过一些特殊处理(主要依赖于实现)并由某些C标准函数作为行终止符,即作为标记来检测何时停止读取字符.

新手或来自高级语言的人混淆的另一个原因是,在C中,对于历史事故,字节被处理为字符(处理单个字节的基本数据类型是char,这是C中最小的数字类型!) .因此,对于具有C背景的人来说,将字节视为字符是很自然的,反之亦然.

尽管Lua是一种比C语言更高级的语言,但它与C的密切关系(它被设计为易于与C代码接口)使得它继承了这种C“字节作为字符”方法的一部分.实际上,例如,Lua字符串可以保存任意字节,并可用于处理原始二进制数据.

c语言lua读文件,file-io – 在Lua中逐行读取文件相关推荐

  1. linux脚本中如何读取文件,如何在Shell脚本中逐行读取文件

    原标题:如何在Shell脚本中逐行读取文件 在这里,我们学习Shell脚本中的3种方法来逐行读取文件. 方法一.使用输入重定向 逐行读取文件的最简单方法是在while循环中使用输入重定向. 为了演示, ...

  2. c++语言循环读写文件夹,在C++中逐行读取文件

    file.txt的内容包括: 5 3 6 4 7 1 10 5 11 6 12 3 12 4 其中,5 3是一个坐标对.如何在C++中逐行处理此数据? 我可以得到第一行,但如何得到文件的下一行? if ...

  3. java 读取文件的指定行_Java中实现读取文件指定行

    Java中实现读取文件指定行 读取文件指定行要用到类LineNumberReader,它是跟踪行号的缓冲字符输入流,其基类是BufferedReader..它有两个构造方法: public LineN ...

  4. mysql 逐行读取文件_PHP fgets()和fgetss():逐行读取文件

    PHP 中提供了两个函数可以实现逐行读取文件,分别是 fgets() 和 fgetss(),下面来分别介绍一下这两个函数. 1.fgets() 函数 fgets() 函数用于一次读取一行数据.函数的语 ...

  5. Golang 中逐行读取文件内容

    原文地址声明:https://blog.csdn.net/qq_23179075/article/details/87082447 Golang 中通过 bufio.NewScanner() 逐行读取 ...

  6. java逐行读取文件_Java逐行读取文件

    java逐行读取文件 Today we will look into different java read file line by line methods. Sometimes we have ...

  7. 5种Python逐行读取文件的方式

    在本文中,我们将讨论在Python中逐行读取文件的不同方法. 假设我们在与python脚本相同的目录中有一个data.txt文件.让我们看看如何逐行阅读其内容. 小型文件的解决方案:使用readlin ...

  8. c语言文件按字节读取整数,C语言逐行读取文件

    C语言可以说是我学习的第一门语言,不过似乎也是忘的最多的一门语言,自从因为项目需要重新拾起C语言,我的噩梦就开始了. 依稀记得大二学习数据结构时编程解决"约瑟夫环"."迷 ...

  9. Go语言逐行读取文件的三种方法

    Go语言有三种逐行读取文件的方法,依次是 ReadString func (b *Reader) ReadString(delim byte) (string, error)ReadString从输入 ...

最新文章

  1. 如何在客户端发送ajax请求,ajax - 从服务器(nodejs)发送数据到客户端(ajax请求)
  2. java arrays方法_Java工具类Arrays中不得不知的常用方法
  3. JDK10的新特性:var和匿名类
  4. 检查容器内的磁盘占用shell(check_container_disk.sh)
  5. SQL获取当前时间、年、月、日等
  6. eb8000软件怎样上传_威纶通触摸屏 如何上传程序 到电脑需要怎么处理
  7. 分布式架构设计之电商平台
  8. oracle中ipad是什么意思,Oracle中Ipad和Rpad函数的用法
  9. 【华谋咨询】企业5s管理做大做强的四大措施
  10. Vue-跟着李南江学编程
  11. 蒙特卡洛之布丰投针(python实现)
  12. 如何理解模块、组件和对象
  13. 126邮箱国外服务器,网易邮箱海外服务器大升级
  14. 做好数据全生命周期管理,实现数据资产化
  15. 字符移位(将大写字母移到字符串尾部并不改变相对顺序)
  16. easyui下拉框值改变
  17. 电脑突然找不到蓝牙开关了
  18. python爬虫爬取京东商品评价_网络爬虫-爬取京东商品评价数据
  19. Transformer讲解(三)- CV变形金刚-ViT知识介绍
  20. Java设计模式七大原则-开闭原则

热门文章

  1. Linux AIO的新归宿:io_uring(介绍,系统调用)
  2. 《深入浅出DPDK》读书笔记(七):PCIe与包处理I/O
  3. 思科VPP 20.05 dpdk node源码分析
  4. 抖音api开放平台对接_抖音新增酒店预订等功能,一只脚踏进美团、携程腹地
  5. r语言 plot_R语言直方图绘制hist(),plot()
  6. 网站如何进行渠道跟踪_网站前期要如何进行SEO优化?
  7. i9可以装服务器系统吗,i9服务器
  8. ShadeGraph教程之节点详解1:Artistic Nodes
  9. 如何判断微信定位服务器,如何快速找到自己的微信定位,完成实操作业?分享一下我的思路...
  10. Visual Studio 2019 v16.6 Preview 3 发布