Можно читать и записывать файлы на SD-карту, используя LFS и IO API на Android.
Чтобы получить доступ к встроенной памяти телефона, добавьте разрешение Android «android.permission.WRITE_EXTERNAL_STORAGE» и установите путь к «/». Оттуда вы можете получить доступ к карте памяти.
Пример:
local lfs = require("lfs")
local path = "/"
local pathType = ""
-- Check to see if path exists
if path and lfs.attributes( path ) then
pathType = lfs.attributes( path ).mode
end
-- Check if path is a directory
if pathType == "directory" then
for file in lfs.dir( path ) do
if "." ~= file and ".." ~= file then
-- Get the file attributes.
local fileAtr = lfs.attributes( path .. "/" .. file )
-- Print path, name and type of file (Directory or file)
print(path,file,fileAtr.mode)
end
end
end
Это напечатает путь, имя файла и тип файла в окне терминала. (Проверено только на устройствах Mac и Android.)
Я нашел способ отобразить изображение вне песочницы на Android и на симуляторе. (ПК не тестировался)
Пример:
local lfs = require("lfs")
--------------------------- Change this path ---------------------------
local path = "path/to/the/image.jpg" -- Change this path to the path of an image on your computer
------------------------------------------------------------------------
local tmpPath = system.pathForFile("tmp.jpg",system.TemporaryDirectory) -- Destination path to the temporary image
--------------------------- Read ----------------------------
local file, reason = io.open( path, "r" ) -- Open the image in read mode
local contents
if file then
contents = file:read( "*a" ) -- Read contents
io.close( file ) -- Close the file (Important!)
else
print("Invalid path")
return
end
--------------------------- Write ----------------------------
local file = io.open( tmpPath, "w" ) -- Open the destination path in write mode
if file then
file:write(contents) -- Writes the contents to a file
io.close(file) -- Close the file (Important!)
else
print("Error")
return
end
---------------------- Open and remove -----------------------
local img = display.newImage("tmp.jpg",system.TemporaryDirectory) -- Display the image from the temporary directory
os.remove(tmpPath) -- Removes the image, so that we can load another image.