Lua之文件I/O

Lua 文件 I/O

Lua I/O 库用于读取和处理文件。分为简单模式(和C一样)、完全模式。

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

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

打开文件操作语句如下:

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

mode 的值有:

模式 描述
r 以只读方式打开文件,该文件必须存在。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
r+ 以可读写方式打开文件,该文件必须存在。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a+ 与a类似,但此文件可读可写
b 二进制模式,如果文件是二进制文件,可以加上b
+ 号表示对文件既可以读也可以写
-- 以只读方式打开文件
file = io.open("test.lua", "r")

-- 设置默认输入文件为test.lua
io.input(file)

-- 输出文件第一行
print(io.read())

-- 关闭打开的文件
io.close(file)

-- 以附加的方式打开只写文件
file = io.open("test.lua", "a")

-- 设置默认输出文件为test.lua
io.output(file)

-- 在文件最后一行添加lua注释
io.write("-- test.lua 文件末尾注释 \n" )

-- 读取所有内容 ,如果加了local第一次写不进去,第二次才能写进去,因为local优先级高
--local file = io.open("test.lua", "r");
file = io.open("test.lua", "r");
--local data = file:read("*a");
data = file:read("*a");
print(data);

-- 关闭打开文件
io.close(file)

运行结果:

时间: 2024-11-04 07:40:08

Lua之文件I/O的相关文章

用VS2005编译生成Lua库文件和解释器

转自http://blog.csdn.net/lieyingshengbao/article/details/9188997 TMD,本来很简单的东西,网上说的乱七八糟,说的也不明白,大家抄来抄去,估计都不自己实践的..花了半个下午研究了一下,总结一下. 1)下载lua工程文件,地址为http://www.lua.org/ftp/,我下载的lua-5.1.3.tar.gz版本:开始时我下载的是最新版本,结果没有.bat文件,费了好多时间,TMD.所以,如果想方便,就下载这个版本的.2)下载后,在

lua遍历文件

看了不少人的,主要还是错误处理有点问题,不多说了 贴代码: require "lfs" function getpathes(rootpath, pathes) pathes = pathes or {} ret, files, iter = pcall(lfs.dir, rootpath) if ret == false then return pathes end for entry in files, iter do local next = false if entry ~=

Lua的文件操作

先简单介绍一下被迫使用Lua的IO的情境: 游戏支持玩家自定义上传头像,在排行榜中会显示玩家列表(包括本服.跨服),原有的做法是先检测CCUserDefault中是否存在指定图片的key以及它的状态.然后在下载头像.下载完成后设置对应的状态.这样导致的一个问题就是CCUserDefault的读写完全失效了.整个游戏下载的补丁包判断和其它判断就完全失效了,不得卸载游戏后重装.个人目前的推测是由于多线程引起的,暂时没有有效的依据 下载头像使用的是libcurl,嗯,又是它,在做项目这么久的过程中,发

lua 设置文件运行的环境

背景 在一个lua文件中书写的代码, 使用的变量, 需要设置其运行环境. 目的: 1. 不破坏全局环境. 2. 限定文件所使用的环境, 作为沙箱功能. 解法 限定运行空间环境的文件: local m = {} m.dingzhiprint = function () print("nasView print") print(os.getenv("PWD")) end bbb = 1 print("dmenu="..dmenu) return m

Lua读写文件

文件读写 文件读写对制作游戏很有帮助.可以调用别的文件中的代码,保存最高分.游戏存档.玩家状态等信写到文件中. 首先,让我们看一个简单的命令:dofile.这个命令会读入另一个文件的代码并立即执行. 代码: dofile("./test.lua") 很简单的命令.注意 ./ 是指根目录,不是子目录.如果是子目录,应该这样用: 代码: dofile("./files/test.lua") 那么,如果我们的文件 test.lua 包含下述代码: 代码: playerx

lua向文件中写入数据,进行记录

function readfile(path) local file = io.open(path, "r") if file then local content = file:read("*a") io.close(file) return content end return nil end function writefile(path, content, mode) mode = mode or "w+b" local file = i

lua遍历文件夹

require"lfs" function findindir (path, wefind, r_table, intofolder) for file in lfs.dir(path) do if file ~= "." and file ~= ".." then local f = path..'\\'..file --print ("/t "..f) if string.find(f, wefind) ~= nil th

cocos2x (c++/lua) spine 文件的预加载

在之前,笔者写过一编博客,通过lua在加载场景加载spineAnimation动画精灵,保存在table中,然后在游戏中创建动画精灵时,提取加载好的spineAnimaiton中的 spSkeletonData来创建spineAnimation,但后来笔者发现重复创建spineAnimation时,全部相同spSkeletonData会重用同一个spSkeletonData,以下是spSkeletonData拷贝方法的源代码: spSkeleton* spSkeleton_create (spS

emeditor lua.esy lua语法文件,肯定好多人找不到

; EmEditor Syntax File ; ; To import this file to an existing configuration, select Configuration ; under the Tool menu, select Define Configurations, select a configuration ; you want to import to, press [Properties], select the Highlight page, and