1、简单介绍:
cocos2dx-lua中对文件的操作都用cc.FileUtils这个类进行操作,它是单一实例。
访问res目录:(fullPathForFilename(arg))
local fullPathForFilename =cc.FileUtils:getInstance():fullPathForFilename(“text.txt”)。如果该文件存放在该目录的其他文件夹下,也要相应的加上搜索目录。
判断文件是否存在:(isFileExist(arg))
local isExist =cc.FileUtils:getInstance():isFileExist(“text.txt”)
可写入目录:(getWritablePath())
local writablePath =cc.FileUtils:getInstance():getWritablePath()
2、实际操作:
--测试资源目录信息
local sharedFileUtils = cc.FileUtils:getInstance()
local function onClickMenu1(pSender)
localfullPathForFilename = sharedFileUtils:fullPathForFilename(“text.txt”)
print(fullPathForFilename) --如果res目录下,没有text.txt文件,那么输出为空
localisExist = sharedFileUtils:isFileExist(“text.txt”)
ifisExist == true then
print(“text.txtexists”)
else
print(“text.txtdoesn’t exists”)
end
end
--读文件
local fullPathForFilename =sharedFileUtils:fullPathForFilename(“test.txt”)
local content =sharedFileUtils:getStringFromFile(fullPathForFilename)
print(content)
--路径搜索
getSearchPaths() --获得所有搜索路径集合
setSearchPaths(searchPaths) --设置搜索路径集合
addSearchPath(path) --追加搜索路径
例如在新建的工程中,在main.lua中最开始的位置:
cc.FileUtils:getInstance():addSearchPath("src/")
cc.FileUtils:getInstance():addSearchPath("res/")
sharedFileUtils:purgeCachedEntries() --清理搜索文件缓存,一般是更新资源后进行搜索前调用。
local searchPaths = sharedFileUtils:getSearchPaths() --获得搜索路径的容器,返回值是一个table。
local writablePath = sharedFileUtils:getWritablePath() --获得可写目录
local resPrefix = “res/”
table.insert(searchPaths, 1, resPrefix..”dir2”)
table.insert(searchPaths, 1, resPrefix..”dir1”)
table.insert(searchPaths, 1, writablePath)
sharedFileUtils:setSearchPaths(searchPaths) --设置搜索目录
3、UserDefault用法
获取单一实例: localuserDefault = cc.UserDefault:getInstance()
常用方法:
local ret = userDefault:getStringForKey(“string”,“defaultString”)
userDefault:setStringForKey(“string”, “realString”)
getDoubleForKey、setDoubleForKey
getFloatForKey、setFloatForKey
getIntegerForKey、setIntegetForKey
getBoolForKey、setBoolForKey
4、字典列表结构的属性列表文件:
比如:
<plist version=”1.0”>
<dict>
<key>root</key>
<array>
<dict>
<key>date</key>
<string>2008-08-16</string>
<key>content</key>
<string>初始化</string>
</dict>
<dict>
<key>date</key>
<string>2016-08-16</string>
<key>content</key>
<string>欢迎使用</string>
</dict>
</array>
</dict>
</plist>
那么读取上面数据:
local fileUtils = cc.FileUtils:getInstance()
local fullPathForFileName =fileUtils:fullPathForFilename(“notice.plist”)
local dict = fileUtils:getValueMapFromFile(fullPathForFileName)
for key, value in pairs(dict) do
for i =1, table.getn(value) do
localrow = value[i]
localdate = row[“date”]
localcontent = row[“content”]
end
end
5、访问根为列表结构的属性列表文件
<plist version = “1.0”>
<array>
<dict>
<key>date</key>
<string>2010-08-04</string>
<key>content</key>
<string>初始化</string>
</dict>
<dict>
<key>date</key>
<string>2016-8-16</string>
<key>content</key>
<string>欢迎使用</string>
</dict>
</array>
</plist>
读取上面数据
local fileUtils = cc.FileUtils:getInstance()
local fullPathForFileName =fileUtils:fullPathForFilename(“notice.plist”)
local vector = fileUtils:getValueVectorFromFile(fullPathForFileName)
for i = 1, table.getn(vector) do
local row= vector[i]
localdate = row[“date”]
localcontent = row[“content”]
end
6、json解析
json.decode(jsonStr)
json解码主要通过decode函数实现,将字符串转为json对象或json数组
local jsonStr = ‘[{“ID”:”1”, “CDate”:”19920715”, “Content”:”发布iOSBook0“},
{“ID”:”2”, “CData”:”19920912”,“Content”:”发布iOSBook1”}]’
local jsonArray = json.decode(jsonStr)
for i = 1, table.getn(jsonArray) do
localjsonObj = jsonArray[i]
local ID= jsonObj[“ID”]
localCDate = jsonObj[“CDate”]
localContent = jsonObj[“Content”]
end
json.encode(jsonArray)
json编码主要通过encode函数实现,将json数组或对象转为字符串
local jsonObj = {ID=”1”, CDate=”19920715”, Content = “发布iOSBook0”}
local jsonStr = json.encode(jsonObj)