cocos2d-x学习笔记(十二)cocos2dx 3.10添加lua LuaFileSystem库遍历文件
在lua中遍历目录文件需要用到lfs库,而所用的cocos2dx 3.10没用lfs,需要自己添加
1、下载lfs.c和lfs.h
https://github.com/keplerproject/luafilesystem
从github获取源码,在src目录拷贝lfs.c和lfs.h到cocos2d项目下cocos2d\external\lua\luafilesystem(luafilesystem为自己新建的文件夹)
2、在VS解决方案libluacocos2d项目下添加luafilesystem文件夹筛选器并承载lfs.c和lfs.h
3、修改lua_extensions.c文件
lua_extensions.c文件在cocos2d\cocos\scripting\lua-bindings\manual\network\目录下
新增如下两行代码:
#include"luafilesystem/lfs.h"和{"lfs",luaopen_lfs},
代码位置如下:
#include"lua_extensions.h"#if__cplusplusextern"C"{#endif//socket#include"luasocket/luasocket.h"#include"luasocket/luasocket_scripts.h"#include"luasocket/mime.h"#include"luafilesystem/lfs.h"staticluaL_Regluax_exts[]={{"socket.core",luaopen_socket_core},{"mime.core",luaopen_mime_core},{"lfs",luaopen_lfs},{NULL,NULL}};...
4、发布到安卓要修改Android.mk
在cocos2d\cocos\scripting\lua-bindings\proj.android目录下修改Android.mk
新增一行lfs.c路径
../../../../external/lua/luafilesystem/lfs.c
#networkLOCAL_SRC_FILES+=../manual/network/lua_cocos2dx_network_manual.cpp\../manual/network/lua_extensions.c\../manual/network/Lua_web_socket.cpp\../manual/network/lua_xml_http_request.cpp\../../../../external/lua/luasocket/auxiliar.c\../../../../external/lua/luasocket/buffer.c\../../../../external/lua/luasocket/except.c\../../../../external/lua/luasocket/inet.c\../../../../external/lua/luasocket/io.c\../../../../external/lua/luasocket/luasocket.c\../../../../external/lua/luasocket/luasocket_scripts.c\../../../../external/lua/luasocket/mime.c\../../../../external/lua/luasocket/options.c\../../../../external/lua/luasocket/select.c\../../../../external/lua/luasocket/serial.c\../../../../external/lua/luasocket/tcp.c\../../../../external/lua/luasocket/timeout.c\../../../../external/lua/luasocket/udp.c\../../../../external/lua/luasocket/unix.c\../../../../external/lua/luasocket/usocket.c\../../../../external/lua/luafilesystem/lfs.c
5、lua遍历文件范例(删除指定目录)
require"lfs"localfunctionremoveDir(path)print("os.rmdir:",path)ifcc.FileUtils:getInstance():isDirectoryExist(path)thenlocalfunction_rmdir(path)localiter,dir_obj=lfs.dir(path)whiletruedolocaldir=iter(dir_obj)ifdir==nilthenbreakendifdir~="."anddir~=".."thenlocalcurDir=path..dirlocalmode=lfs.attributes(curDir,"mode")ifmode=="directory"then_rmdir(curDir.."/")elseifmode=="file"thencc.FileUtils:getInstance():removeFile(curDir)endendendlocalsucc,des=cc.FileUtils:getInstance():removeDirectory(path)ifdesthenprint(des)endreturnsuccend_rmdir(path)endreturntrueend
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。