Я процитирую себя от здесь
Я использую это (но я действительно проверяю на ошибку):
require("lfs")
-- no function checks for errors.
-- you should check for them
function isFile(name)
if type(name)~="string" then return false end
if not isDir(name) then
return os.rename(name,name) and true or false
-- note that the short evaluation is to
-- return false instead of a possible nil
end
return false
end
function isFileOrDir(name)
if type(name)~="string" then return false end
return os.rename(name, name) and true or false
end
function isDir(name)
if type(name)~="string" then return false end
local cd = lfs.currentdir()
local is = lfs.chdir(name) and true or false
lfs.chdir(cd)
return is
end
os.rename (name1, name2) переименует name1 в name2. Используйте то же имя, и ничто не должно измениться (за исключением ошибки). Если все работает хорошо, он возвращает true, иначе он возвращает nil и сообщение об ошибке. Если вы не хотите использовать lfs, вы не можете различить файлы и каталоги, не пытаясь открыть файл (что немного медленно, но нормально).
Так что без LuaFileSystem
-- no require("lfs")
function exists(name)
if type(name)~="string" then return false end
return os.rename(name,name) and true or false
end
function isFile(name)
if type(name)~="string" then return false end
if not exists(name) then return false end
local f = io.open(name)
if f then
f:close()
return true
end
return false
end
function isDir(name)
return (exists(name) and not isFile(name))
end
выглядит короче, но занимает больше времени ...
Также открыть файл рискованно
Веселого программирования!