如何从项目内任意文件夹加载json文件?
2014-7-19 23:45:20
收藏:0
阅读:115
评论:3
如何从项目内的任意文件夹中加载 JSON 文件?
我有一个数据文件夹,其中包含用户数据文件 user_data.json,但 system.DocumentsDirectory 指向另一个文件夹(我从网上复制,我对 Lua 和 Corona 还相当陌生)。
function custom_load( strFilename )
local path = system.pathForFile( strFilename, system.DocumentsDirectory )
local file = io.open( path, "r" )
if file then
local content = file:read( "*a" )
io.close( file )
return contents
else
return ''
end
end
点赞
用户2653067
别担心,它非常简单,只需参考这个代码,阅读后你就会自动编写。
https://github.com/robmiracle/Simple-Table-Load-Save-Functions-for-Corona-SDK/blob/master/main.lua
2014-07-21 06:46:37
用户2424993
在 pathForFile 中使用:
local path = system.pathForFile( "data/user_data.json", system.ResourceDirectory)
2014-07-21 14:38:38
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
在读取文件之前,必须先存在它。也许对 Corona SDK 文件夹结构的简要描述可以帮助你理解发生了什么。
所有应用程序,无论是在 iOS、Android 还是 Corona 模拟器中运行,都由“应用程序包”组成。在 iOS 中,这是 Corona SDK 生成的 .app 文件;在 Android 中,这是 .apk 文件。位于 main.lua 和你创建的任何文件夹中的文件均是此应用包的一部分。出于安全考虑,该文件夹对你的应用程序是“只读”的。Corona SDK 允许你引用此文件夹中的文件,例如 system.ResourceDirectory。
一旦应用程序被创建并运行在设备上,你应用程序的 Sandbox 将创建另外三个文件夹。这是只有你的应用程序能够访问的区域。这些文件夹包括:
system.DocumentsDirectory,一个可读可写的文件夹,用于存储你想要保留在应用程序中的东西。这是你将要保存的设置文件、你的用户使用你的应用程序创建的文件等的存储位置。
system.TemporaryDirectory,一个可读可写的文件夹,用于存储你不需要保留的东西。这是你可以下载文件的地方,例如你打算丢弃的文件等。
在 Apple 的 iOS 中,有第三个文件夹,称为 Corona 所称的 system.CachesDirectory,它像 system.TemporaryDirectory 一样,不能保证存储的文件可以长时间存在,但苹果的意图是,如果你能够从网络上下载它并且它被删除了,你总是能够重新下载它。在 Android 上,system.CachesDirectory 和 system.TemporaryDirectory 是相同的文件夹。
由于假设应用程序是唯一可以写入其沙箱的东西,因此 system.DocumentsDirectory 中的文件必须由应用程序创建。你不能只是把文件放在那里(好吧,在模拟器上有特殊的方法,如果你知道在你的 Mac 或 PC 上哪里找到它,但这不是用户加载你的应用程序的实际情况),因此你的应用程序必须在 system.DocumentsDirectory 中创建该文件。
如果文件尚未创建,则尝试使用“读取”模式(“r”)打开文件的 io.open() 将返回 nil,因为文件不存在。