Je travaille sur un système qui ne supporte pas lua File System Library. Donc je dois faire mon propre itérateur de répertoire qui me donne la liste des fichiers avec le chemin complet du format particulier.lua Custom Directory Iterator
Le système possède une API que nous pouvons définir pour le chemin d'accès au répertoire et une autre API pour obtenir la liste des fichiers dans ce répertoire au format table lua.
L'API: FileSetDir() définit le répertoire pour obtenir la liste des fichiers. L'API: FileList() donne la table de liste de fichiers du répertoire que nous avons défini à l'aide de l'API: FileSetDir(). Par exemple, considérez la structure de répertoires suivante:
Movies/3d Movies/Avatar/Avatar.mp4
Movies/3d Movies/Avengers/Avengers.mkv
Movies/3d Movies/ironman.mp4
Movies/Horor/Ring/Ring.avi
Movies/Horor/A Nightmare On Elm Street/A Nightmare On Elm Street.iso
Movies/Barfi.mkv
Mon code ..
RootDirList1 = {}
RootDirList = {}
finalpath={}
function SetDIR(v)
if v=="" then
RootDir = '/mnt/media/net/192.168.1.40_usbshare1/Movies/'
else
RootDir = '/mnt/media/net/192.168.1.40_usbshare1/Movies/'..v
end
API:FileSetDir (RootDir)
RootDirList1 = API:FileList()
CheckDirectory()
end
function CheckDirectory()
for i,v in pairs(RootDirList1) do
local RootDir = '/mnt/media/net/192.168.1.40_usbshare1/Movies/'..v
API:FileSetDir (RootDir)
local RootDirList = API:FileList()
if RootDirList == nil then
print(v)
print("Not Directory")
if string.find(v,"%.mkv$") or string.find(v,"%.mp4$") then
finalpath[#finalpath+1] =RootDir.."/"..t
print(RootDir.."/"..t)
end
else
CheckDirectory(v)
end
end
end
SetDIR("")
Le code me donne une erreur avec "débordement de la pile". Le SetDIR définit le répertoire avec API: FileSetDir (RootDir) et obtenir la liste des fichiers dans la table RootDirList1. alors j'appelle la fonction CheckDirectory() ici j'exécute une boucle pour la table RootDirList1 si l'entrée de la table est le fichier où elle sera stockée dans la table finalpath. Si l'entrée de la table est Directory, elle appelle SetDIR pour obtenir la liste des fichiers dans ce répertoire.
Je sais que mon approche est fausse de faire de ce travail une idée brillante sera grandement appréciée.
chèque excès "ou" en chaîne "si string.find (v," %. Mkv $ ") ou string.find (v," %. Mp4 $ ") ou alors" oh –
qui était un typo le code original n'a pas cela. –
function CheckDirectory() - appel sans fin sans paramètres –