在我的应用程序中,我有一个类似于以下的结构:
app (baseDirectory)
|
+-> config
|
+-> Levels
使用电晕时,我正在尝试自动加载Levels目录中的所有文件。以下是我目前的做法。 注意:确实在Windows上工作,而不是mac。
local dirPath = system.pathForFile('config/Levels')
for file in lfs.dir(dirPath) do
if (file ~= '.' and file ~= '..') then
-- require the file
end
end
现在,如果我使用以下内容,它可以在Mac上运行,但不适用于'config / Levels'。
local dirPath = system.pathForFile('config')
我不确定这是一个错误还是我做错了什么。我认为,因为它适用于Windows但不适用于Mac,这将是一个错误。
因此,总结如何才能使用以上目录结构
local dirPath = system.pathForFile('config/Levels')
答案 0 :(得分:1)
经过大量调试后,我找到了Mac的解决方案。下面是我在目录中获取文件的功能。适用于Windows和Mac。
必须在baseDirectory中有一个名为main.lua的文件。
-- path is relative to the baseDirectory
function getFiles(path)
local filenames = { }
local baseDir = system.pathForFile('main.lua'):gsub("main.lua", "")
for file in lfs.dir(baseDir .. path) do
if (file ~= '.' and file ~= '..') then
table.insert(filenames, file)
end
end
if (#filenames == 0) then return false end
return filenames
end
问题是system.pathForFile('directory / subdirectory')在Mac上不起作用,因为它严格查找文件。只要它可以在baseDirectory中找到一些文件,你就可以追加相对路径来检索目标目录中的所有文件。
答案 1 :(得分:0)
一种解决方案是改变“级别”中的“级别”。 也许它区分大小写。 第二种解决方案是不在 config 文件夹中使用“levels”目录。 以下是我建议您整理文件的方法:
app (baseDirectory)
|
+-> • configLevels
• configPlayer
• configOther