system.ResourceDirectory

类型 常量
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。

Android

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 )