Corona中文站

强大、易学的跨平台(iOS/Android)开发框架。QQ群1:74390406(满) 群2:221929599

导航

Corona实现ini文件的读写[代码]

注意:
1)目前只支持对文件进行读写,暂时不支持读取文本流,已经预留接口,可以自行实现。
2)设计成类,可以同时加载多个ini文件


以下为代码:

 

module(..., package.seeall)
 
iniClass = {
path = nil,
}
 
function iniClass:new(o)
local o = o or {}
setmetatable(o, self)
self.__index = self
return o
end
 
function iniClass:loadFromFile( srcName, srcPath )
 
self.path = system.pathForFile( srcName, srcPath )
local fh = io.open( self.path )
--no such file, create it
if not fh then
fh = io.open(self.path, "w")
if fh then
fh:close()
fh = io.open( self.path )
else
print("create file failed")
end
end
local sect  = nil
for line in fh:lines() do
line = string.gsub(line, "%s*;.*", "")
s, e, n  = string.find(line, "%[(.+)%]")
if s then
self[n] = {}
sect = n
--print(n)
else
s, e, k, v = string.find(line, "(%w+)=(.*)")
if s then
--print(s, e, k, v, sect)
self[sect][k] = string.gsub(v,"\r","")
end
end
end
fh:close()
end
 
function iniClass:loadFromString( source )
 
end
 
function iniClass:dataToString()
local data = ""
for k,v in pairs(self) do
--print(k, v)
if type(v) == "table" then
if string.len(data) == 0 then
data = "[" .. k .. "]"
else
data = data .. "\r\n" .. "[" .. k .. "]"
end
--print(data)
for a, b in pairs(v) do
data = data .. "\r\n" .. a .. "=" .. b
end
end
end
--print(data)
return data
end
 
function iniClass:save()
if self.path then
local wfh = io.open( self.path, "wb" )
if wfh then
wfh:write( self:dataToString() )
wfh:close()
end
end
end
 
function iniClass:print()
for k,v in pairs(self) do
print(k, v)
end
end
 
function new()
local ret = iniClass:new()
return ret
end
 

 


示例:
cfg = ini.new()
cfg:loadFromFile("cfg.txt", system.DocumentsDirectory)
print(cfg["system"]["version"])
 

 

<< GaryLiu_CC说GameSalad和CoronaCorona SDK垂直翻转图片的技巧 >>

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最近发表

Powered By Z-Blog 1.8 Walle Build 100427 Copyright 2011-2015 BuildApp.Net. All Rights Reserved.