读和写都没问题
会出现问题,是因为 对空文件进行 *** 作了吧
读的那一部分 local file = ioopen("1txt")
后面就直接 *** 作了,并没有判断file是否打开成功
如果你的桌面没有1txt 则打开会出错 所以后面肯定也会出错
只要加一个if 判断一下就好了
local file = ioopen("1txt")
if file then
for l in file:lines() do
print(l)
end
end
file:close()local file = ioopen("1txt","r")
local str = file:read("a")
file:close()
local newStr = stringgsub(str,"aaa","bbb")
print(newStr)--移除文件
function MkidrremoveFile(path)
iowritefile(path, "")
osremove(path)
end
--读取文件
function MkidrreadFile(path)
local file = ioopen(path, "rb")
if file then
local content = file:read("all")
ioclose(file)
return content
end
return nil
end
-- Lua lfs 库的使用
lfsattributes(filepath [, aname]) 获取路径指定属性
lfschdir(path) 改变当前工作目录,成功返回true,失败返回nil加上错误信息
lfscurrentdir 获取当前工作目录,成功返回路径,失败为nil加上错误信息
lfsdir(path) 返回一个迭代器(function)和一个目录(userdata),每次迭代器都会返回一个路径,直到不是文件目录为止,则迭代器返回nil
lfslock(filehandle, mode[, start[, length]])
lfsmkdir(dirname) 创建一个新目录
lfsrmdir(dirname) 删除一个已存在的目录,成功返回true,失败返回nil加上错误信息
-- Lua io *** 作
ioopen (filename [, mode])
功能:按指定的模式打开一个文件,成功则返回文件句柄,失败则返回nil+错误信息
mode:
"r": 读模式 (默认);
"w": 写模式;
"a": 添加模式;
file:write()
功能:按指定的参数格式输出文件内容,参数必须为字符或数字,若要输出其它值,则需通过tostring或stringformat进行转换
file:close()
功能:关闭文件,lua有垃圾自动回收
ioexists()
测试文件是否存在,如果存在返回true
-- Lua os *** 作
osremove (filename)
功能:删除文件或一个空目录,若函数调用失败则返加nil加错误信息
osrename (oldname, newname)
功能:更改一个文件或目录名,若函数调用失败则返加nil加错误信息
ossetlocale (locale [, category])
功能:设置程序的当前设置,函数返回最新的值,失败则返回nil
ostime ([table])
功能:按table的内容返回一个时间值(数字),若不带参数则返回当前时间table的字段:lua游戏脚本中,有许多是需要登录许多小号,这些小号一般存放在一个文档里,脚本运行时需要读取这些数据。
下面有个txt文档,记录这账号与密码的数据,如下
其中,左边为账号,右边为密码,中间用空格隔开(空格数不确定)。账号允许使用中英文、数字、符号(但不允许有空格),密码允许使用中英文、数字、符号(允许有空格,但不允许出现在最前或最后),忽略每行的首尾空格。
下面在电脑上进行测试,由于我的电脑的 *** 作系统是Windows简体中文版,也就是系统的字符编码为GBK。而手机采用的字符编码一版是UTF-8(特别要注意这点!)
为了避免乱码,将txt文档与lua文件均采用和系统的字符编码相同的编码(很重要!)
对于GBK编码的系统,保存时,选择ANSI(记事本默认保存的就是这个格式)
如果用于手机上运行,则选择UTF-8
lua实现:
运行结果:
稍作修改即可应用于手机端,这里以iOS作为演示:
日志:
本程序的主要难点在于,逐行读取的迭代器lines()函数、trim()函数实现、账号密码的匹配、table的 *** 作。
其中用到的自定义函数stringtrim()大家可以记一下,方便在自己的程序里调用,还是挺实用的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)