简单模式和完全模式

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

打开文件

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

mode 选项

模式 简介
r 只读,文件必须存在。默认。
w 只写,文件存在,则写入时覆盖原有内容。文件不存在,则创建文件。
a 附加写入,文件存在,则从文件末尾写入。文件不存在,则创建文件。
b 二进制模式,与r/w/a结合使用。
+ 表示文件可读写,与r/w/a结合使用。
1
2
3
4
5
6
7
8
9
10
11
12
file01 = io.open("test.lua", "r")
file02 = io.open("test.lua", "rb")
file03 = io.open("test.lua", "w")
file04 = io.open("test.lua", "wb")
file05 = io.open("test.lua", "a")
file06 = io.open("test.lua", "ab")
file07 = io.open("test.lua", "r+")
file08 = io.open("test.lua", "r+b")
file09 = io.open("test.lua", "w+")
file10 = io.open("test.lua", "w+b")
file11 = io.open("test.lua", "a+")
file12 = io.open("test.lua", "a+b")

从文件读取数据

1
2
3
4
5
6
7
8
9
10
11
12
13
file01 = io.open("test.lua", "r")
io.input(file01)
print("简单模式读取的文件内容:n"..io.read()) -- 完全模式
file02 = io.open("test.lua", "r")
print("完全模式读取的文件内容:n"..file02:read()) -- 关闭文件流
io.close()
大专栏  Lua-文件操作ne">file02:close()

向文件写入数据

1
2
3
4
5
6
7
8
9
10
11
12
13
file01 = io.open("test.lua", "a")
io.output(file01)
io.write("-- 这是一行简单模式写入的文本。") -- 完全模式
file02 = io.open("test.lua", "a")
file02:write("-- 这是一行完全模式写入的文本。") -- 关闭文件流
io.close(file01)
file02:close()

关闭文件

1
2
3
4
5
6
7
8
9
file01 = io.open("test.lua", "r")
io.input(file01)
file02 = io.open("test.lua", "r") io.close(file01) -- 完全模式
file02:close()

方法

简单模式,io的方法

调用方式:io.方法名()。如:io.read()

  1. read()

输入文件一行数据,并把游标指向下一行开始地址。

参数:

参数 说明
“*l” 读取下一行,在文件尾 (EOF) 处返回 nil。默认。
“*n” 读取一个数字并返回它。
“*a” 从当前位置读取整个文件。
number 返回一个指定字符个数的字符串,或在 EOF 时返回 nil。
  1. tmpfile()

返回一个临时文件句柄,该文件以更新模式(附加)打开,程序结束时自动删除。

  1. type(file)

检测file是否一个可用的文件句柄。

  1. flush()

向文件写入缓冲中的所有数据。

  1. lines(optional filename)

打开指定的文件filename为只读模式并返回一个迭代函数,每次调用将获得文件中的一行内容,当到文件尾时,将返回nil,并自动关闭文件。

若不带参数时io.lines() io.input():lines(); 读取默认输入设备的内容,但结束时不关闭文件

完全模式,文件句柄的方法

调用方式:文件句柄:方法名()。如:file:read()。

  1. read()

作用和参数与简单模式一致。

  1. seek(optional whence, optional offset)

设置和获取当前文件位置,成功则返回最终的文件位置(按字节),失败则返回nil加错误信息。

参数 whence 取值:

说明
“cur” 从当前位置开始。默认
“set” 从文件头开始
“end” 从文件尾开始

offset,偏移量,默认为0。

不带参数file:seek()则返回当前位置。
file:seek(“set”)则定位到文件头。
file:seek(“end”)则定位到文件尾并返回文件大小。

  1. flush()

向文件写入缓冲中的所有数据。

Lua-文件操作的更多相关文章

  1. Lua文件操作和串行化

    function n_serialize(data) if type(data)=="number" then io.write(data,"\n") else ...

  2. 关于cocos2dx手游lua文件加密的解决方式

    非常多使用cocos2dx+lua做游戏的同学.都会想到一个问题,我的游戏一旦公布,如何才干保证的我脚本代码不被破解.不泄露代码.尽管这和开源.共享的原则不合.可是代码也是coder的劳动成果,理应得 ...

  3. cocos2dx-lua 文件操作

    print("开始") --检查文件是否存在 local path = "ABC.txt" local fileExist = cc.FileUtils:get ...

  4. 修改Unity中Lua文件的默认打开程序

    项目中引用了XLua,而Lua文件又是以txt文件结尾的,当修改系统的扩展脚本编辑器为vs后双击lua文件(xx.txt)默认也使用vs打开了,无提示的黑白文本编辑 昨办? -. 后来看到网上有写Un ...

  5. Lua------------------改善Unity编辑器对Lua文件的支持

    原创 2017年03月10日 18:44:22 标签: Unity / lua / 编辑器 952 当前版本的Unity(截至Unity5.5.x)中TextAsset类不支持后缀为lua的文件,将l ...

  6. lua常用操作

    1 .Lua生成随机数: Lua 生成随机数需要用到两个函数:math.randomseed(xx), math.random([n [, m]]) 1. math.randomseed(n) 接收一 ...

  7. 【.NET深呼吸】Zip文件操作(1):创建和读取zip文档

    .net的IO操作支持对zip文件的创建.读写和更新.使用起来也比较简单,.net的一向作风,东西都准备好了,至于如何使用,请看着办. 要对zip文件进行操作,主要用到以下三个类: 1.ZipFile ...

  8. 野路子出身PowerShell 文件操作实用功能

    本文出处:http://www.cnblogs.com/wy123/p/6129498.html 因工作需要,处理一批文件,本想写C#来处理的,后来想想这个是PowerShell的天职,索性就网上各种 ...

  9. Node基础篇(文件操作)

    文件操作 相关模块 Node内核提供了很多与文件操作相关的模块,每个模块都提供了一些最基本的操作API,在NPM中也有社区提供的功能包 fs: 基础的文件操作 API path: 提供和路径相关的操作 ...

  10. 归档NSKeyedArchiver解归档NSKeyedUnarchiver与文件管理类NSFileManager (文件操作)

    ========================== 文件操作 ========================== 一.归档NSKeyedArchiver 1.第一种方式:存储一种数据. // 归档 ...

随机推荐

  1. maven项目集成Quartz定时任务框架,实现批处理功能

    一.Quartz简介 主要做定时任务,即:在指定时间点或时间段,执行某项任务,可设置执行次数.时间间隔等. 二.Springcloud简介 对比传统的.庞大的.复杂的.以ssm或ssh为框架的web项 ...

  2. SQL基础教程(第2版)第3章 聚合与排序:3-3 为聚合结果指定条件

    第3章 聚合与排序:3-3 为聚合结果指定条件 ● 使用COUNT函数等聚合函数对表中数据进行汇总操作时,为其指定条件的不是WHERE子句,而是HAVING子句.● 聚合函数可以在SELECT子句. ...

  3. python对数组缺失值进行填充

    1. 两个常用的函数 1.1 np.nonzero() np.nonzero()函数返回数组中不为False(0)的元素对应的索引 a = np.array([1,2,0,3,1,0]) print( ...

  4. 量化交易alpha、beta、shape等基本概念梳理

    1.期货型基金(CTA)的 Alpha 和 Beta 是指什么?  https://zhuanlan.zhihu.com/p/20700337 1980S                       ...

  5. Qt5学习笔记(1)-环境配置(win+64bit+VS2013)

    Qt5学习笔记(1)-环境配置 工欲善其事必先-不装-所以装软件 久不露面,赶紧打下酱油. 下载 地址:http://download.qt.io/ 这个小网页就可以下载到跟Qt有关的几乎所有大部分东 ...

  6. goahead(web服务器)分析

    一.参考网址 1.源码的github地址 二.网页是采用文件读写方式,还是转换为数组方式? 1)其通过宏定义“WEBS_PAGE_ROM”来区分,我是在websPageReadData()(page. ...

  7. delphpi tcp 服务和客户端 例子

    //服务器端unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, ...

  8. textarea高度自适应解决方法

    引入autosize.js <script src="./autosize.js"></script> autosize(document.getEleme ...

  9. this, 闭包,箭头函数

    闭包写法 //后台每个执行环境都有一个表示变量的对象---变量对象 //例如compare()函数调用 //compare的执行环境而言,其作用域链包含两个变量对象 本地活动对象 全局活动对象 全局变 ...

  10. javascript阻止事件冒泡和浏览器的默认行为

    1.阻止事件冒泡,使成为捕获型事件触发机制. 1 function stopBubble(e) { 2 //如果提供了事件对象,则这是一个非IE浏览器 3 if ( e && e.st ...