类型 常量 库 system.* 修订版 版本 2024.3703 关键字 system 目录,ResourceDirectory 另请参阅 system.pathForFile() system.ApplicationSupportDirectory system.CachesDirectory system.DocumentsDirectory system.TemporaryDirectory
与 system.pathForFile() 配合使用,为检索所有应用程序资产存在的文件(例如图像和声音文件)创建路径。这通常称为“应用捆绑包”。
此属性还可以与其他 API 配合使用,这些 API 会要求 baseDir
作为参数,例如 display.newImageRect()。如果未指定其他目录,资源目录通常是默认目录。
您不得创建、修改或向此目录添加文件。这样做将妨碍设备验证您应用程序的完整性;在某些情况下,设备会将您的应用程序视为恶意软件并拒绝启动您的应用程序。
在 Corona 模拟器中,这将位于沙盒文件夹中/Documents
和 /tmp
目录不同,资源目录无法通过
查看。重新陈述一下上面提到的内容:system.ResourceDirectory
是存储您的 main.lua
文件和通常您的所有资产(资源)文件的位置。出于安全考虑,此目录
Corona 中的文件访问基于底层操作系统,该操作系统会因平台而异。在 iOS 设备上,您可以访问上面描述的所有目录中的文件。然而,在 Android 上,没有字面意义上的 system.ResourceDirectory
,因为所有资源文件都驻留在压缩的 .apk
文件内。
Corona 允许使用适当的 API 直接加载图像和音频文件,但它受限于使用文件 I/O API 访问 Android 上的资源文件。具体来说,无法从资源目录中读取以下类型:.html
、.htm
、.3gp
、.m4v
、.mp4
、.png
、.jpg
和 .ttf
。
由于此限制,如果您在需要复制到另一个目录的核心目录中捆绑了这些类型的文件,则必须更改文件名,以便文件 I/O API 可以访问它们。例如,如果您想将 cat.png
从资源目录移动到文档目录,则必须将其重命名为 cat.png.txt
才能复制。有关详细信息,请参阅此处。
system.ResourceDirectory
-- Get path for file "data.txt" in the resource directory local path = system.pathForFile( "data.txt", system.ResourceDirectory ) -- Open the file from the path local fh = io.open( path, "r" ) if fh then -- File exists; read its contents into a string local contents = fh:read( "*a" ) print( "Contents of " .. path .. "\n" .. contents ) end io.close( fh )