UDF > File >


_FileListToArrayRec

Obtient les fichiers et/ou les sous-r�pertoires d'un r�pertoire avec en option une r�cursivit� de profondeur donn�e et un r�sultat tri�

#include <File.au3>
_FileListToArrayRec ( $sFilePath [, $sMask = "*" [, $iReturn = $FLTAR_FILESFOLDERS [, $iRecur = $FLTAR_NORECUR [, $iSort = $FLTAR_NOSORT [, $iReturnPath = $FLTAR_RELPATH]]]]] )

Param�tres

$sFilePath R�pertoire initial utilis� pour g�n�rer la liste des fichiers.
Si le chemin se termine par '\' alors les r�pertoires seront retourn�s avec '\' � la fin.
Si la longueur du chemin > 260 caract�res, le chemin sera pr�fix� par "\\?\" - les chemins retourn�s ne seront pas affect�s
$sMask [optionnel] Filtre pour le r�sultat. Plusieurs filtres doivent �tre s�par�es par ";"
Utilisez "|" pour s�parer les 3 champss possibles de filtres : "Include|Exclude|Exclude_Folders"
    Include = Fichiers/R�pertoires � inclure (par d�faut = "*" [tous])
    Exclude = Fichiers/R�pertoires � exclure (par d�faut = "" [aucun])
    Exclude_Folders = uniquement utilis� si $iRecur = 1 AND $iReturn <> 2 pour exclure des r�pertoires d�finis (par d�faut = "" [aucun])
$iReturn [optionnel] Sp�cifie s'il faut retourner les fichiers, les r�pertoires ou les deux et omettre ceux qui ont certains attributs
    $FLTAR_FILESFOLDERS (0) - (par d�faut) Retourne � la fois les fichiers et les r�pertoires
    $FLTAR_FILES (1) - Retourne uniquement les fichiers
    $FLTAR_FOLDERS (2) - Retourne uniquement les r�pertoires
Ajoute un ou plusieurs des �l�ments suivants � $iReturn pour omettre les fichiers/r�pertoires avec des attributs donn�s
    + $FLTAR_NOHIDDEN (4) - fichiers et r�pertoires cach�s
    + $FLTAR_NOSYSTEM (8) - fichiers et r�pertoires syst�me
    + $FLTAR_NOLINK (16) - r�pertoires li�s/joints
$iRecur [optionnel] Indique si la recherche sera r�cursive dans les sous-r�pertoires et jusqu'� quel niveau de profondeur
    $FLTAR_NORECUR (0) - Ne recherche pas dans les sous-r�pertoires (par d�faut)
    $FLTAR_RECUR (1) - Recherche dans tous les sous-r�pertoires (r�cursivit� illimit�e)
Entier n�gatif - Recherche dans les sous-r�pertoires de profondeur sp�cifi�e
$iSort [optionnel] Trie les r�sultats par ordre alphab�tique et par profondeur
    $FLTAR_NOSORT (0) - Pas de tri (par d�faut)
    $FLTAR_SORT (1) - Avec tri
    $FLTAR_FASTSORT (2) - Tri avec l'algorithme le plus rapide (ce qui suppose que les fichiers dans les r�pertoires sont retourn�s tri�s - n�cessite NTFS et ce n'est pas garanti)
$iReturnPath [optionnel] Indique le chemin d'affichage des r�sultats:
    $FLTAR_NOPATH (0) - Uniquement le nom des fichiers/r�pertoires
    $FLTAR_RELPATH (1) - Relativement au chemin initial (par d�faut)
    $FLTAR_FULLPATH (2) - Chemin complet inclus

Valeur de retour

Succ�s: Retourne un tableau de dimension 1 constitu� comme il suit:
    [0] = Nombre de Fichiers/R�pertoires retourn�s
    [1] = 1er Fichier/R�pertoire
    [2] = 2e Fichier/R�pertoire
    ...
    [n] = n-i�me Fichier/R�pertoire
�chec: Retourne une cha�ne vide, @error = 1 et @extended comme ci-dessous:
    1 - Chemin introuvable ou non valide
    2 - Param�tre Include non valide
    3 - Param�tre Exclude non valide
    4 - Param�tre Exclude_Folders non valide
    5 - Param�tre $iReturn non valide
    6 - Param�tre $iRecur non valide
    7 - Param�tre $iSort non valide
    8 - Param�tre $iReturnPath non valide
    9 - Aucun Fichier/R�pertoire trouv�

Remarques

Si les fichiers et/ou r�pertoires � retourner sont tous dans le m�me r�pertoire et sont d�finis par un seul filtre simple, la fonction _FileListToArray() a des chances d'�tre beaucoup plus rapide.

Logique de Inclure/Exclure/Exclude_Folders:
    -Recherche non-r�cursive:
        Inclure/Exclure: Fichiers et/ou r�pertoires
        Exclude_Folders: Ignor�s
    -Recherche r�cursive:
        Inclure/Exclure:
            $iReturn = $FLTAR_FILESFOLDERS/$FLTAR_FILES - Uniquement les fichiers
            $iReturn = $FLTAR_FOLDERS - Uniquement les r�pertoires
        Exclude_Folders :
            $iReturn = $FLTAR_FILESFOLDERS/$FLTAR_FILES - Uniquement les r�pertoires
            $iReturn = $FLTAR_FOLDERS - Ignor�

Le tri des r�sultats augmentera de fa�on significative le temps n�cessaire � la fonction pour retourner un tableau

Malgr� son nom, cette fonction est it�rative, pas r�cursive. Les constantes sont d�finies dans FileConstants.au3

En relation

_FileListToArray

Exemple

#include <Array.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>

Example()

Func Example()
    Local $sAutoItDir = StringLeft(@AutoItExe, StringInStr(@AutoItExe, "\", Default, -1))
    If StringRight($sAutoItDir, 5) = "beta\" Then
        $sAutoItDir = StringTrimRight($sAutoItDir, 5)
    EndIf
    ConsoleWrite($sAutoItDir & @CRLF)

    ; Une liste tri�e de tous les fichiers et r�pertoires dans le dossier de l'installation AutoIt
    Local $aArray = _FileListToArrayRec($sAutoItDir, "*", $FLTAR_FILESFOLDERS, $FLTAR_RECUR, $FLTAR_SORT)
    _ArrayDisplay($aArray, "Arbre tri�")

    ; Et maintenant, en ignorant le "Inclure" des r�pertoires
    $aArray = _FileListToArrayRec($sAutoItDir, "*||include", $FLTAR_FILESFOLDERS, $FLTAR_RECUR, $FLTAR_SORT)
    _ArrayDisplay($aArray, "Pas de r�pertoire 'Include'")

    ; Une liste tri�e de tout, mais les fichiers .exe dans le dossier \AutoIt3
    $aArray = _FileListToArrayRec($sAutoItDir, "*|*.exe", $FLTAR_FILES, $FLTAR_NORECUR, $FLTAR_SORT)
    _ArrayDisplay($aArray, "Pas de fichier .EXE")

    ; Et voici les fichiers .exe que nous avons laiss�s ci-dessus
    $aArray = _FileListToArrayRec($sAutoItDir, "*.exe", $FLTAR_FILES)
    _ArrayDisplay($aArray, "Fichiers .EXE")

    ; Un test pour tous les r�pertoires et les fichiers .exe dans l'arbre des r�pertoires, en omettant les r�pertoires commen�ant par I (Icons et Include)
    $aArray = _FileListToArrayRec($sAutoItDir, "*.exe||i*", $FLTAR_FILESFOLDERS, $FLTAR_RECUR, $FLTAR_SORT)
    _ArrayDisplay($aArray, "Recursivit� avec filtre")

    ; Regardons les fichiers d'ic�nes - mais excluons le r�pertoire "Icons"
    $aArray = _FileListToArrayRec($sAutoItDir, "*.ico||ic*", $FLTAR_FILES, $FLTAR_RECUR, $FLTAR_SORT)
    If @error Then
        MsgBox($MB_SYSTEMMODAL, "Ooops!", "Pas de fichier ico trouv�")
    Else
        _ArrayDisplay($aArray, "Fichiers ico qui ne sont pas dans le dossier 'Icons'")
    EndIf

    ; Et pour montrer que le filtre s'applique aux fichiers ET aux r�pertoires quand non r�cursive
    $aArray = _FileListToArrayRec($sAutoItDir, "*.exe", $FLTAR_FILESFOLDERS, $FLTAR_NORECUR, $FLTAR_SORT)
    _ArrayDisplay($aArray, "Pas de r�cursivit� avec filtre")

    ; Le filtre s'applique �galement aux r�pertoires lors de la recherche r�cursive pour les dossiers
    $aArray = _FileListToArrayRec($sAutoItDir, "Icons", $FLTAR_FOLDERS, $FLTAR_RECUR, $FLTAR_SORT)
    _ArrayDisplay($aArray, "R�cursivit� sur les dossiers avec filtre")

    ; Notez que le param�tre exlude_folder est ignor� lors de la recherche dans les r�pertoires - "Icons" sera exclus mais "Include" sera toujours l�
    $aArray = _FileListToArrayRec($sAutoItDir, "*|ic*|i*", $FLTAR_FOLDERS, $FLTAR_RECUR, $FLTAR_SORT)
    _ArrayDisplay($aArray, "'Icons' out - 'Include' in")

    ; La racine de C:\Windows montre ses r�pertoires cach�s/syst�me
    $aArray = _FileListToArrayRec("C:\Windows\", "*", $FLTAR_FOLDERS)
    _ArrayDisplay($aArray, "Affiche les dossiers cach�s")

    ; La racine de C:\Windows omet ses r�pertoires cach�s/syst�me
    $aArray = _FileListToArrayRec("C:\Windows\", "*", $FLTAR_FOLDERS + $FLTAR_NOHIDDEN + $FLTAR_NOSYSTEM)
    _ArrayDisplay($aArray, "Cache les dossiers cach�s")
EndFunc   ;==>Example