UDF > File >


_FileReadToArray

Lit le fichier sp�cifi� dans un tableau 1D ou 2D

#include <File.au3>
_FileReadToArray ( $sFilePath, ByRef $vReturn [, $iFlags = $FRTA_COUNT [, $sDelimiter = ""]] )

Param�tres

$sFilePath Chemin et nom du fichier � lire.
$vReturn Variable qui contiendra les donn�es retourn�es - pas n�cessairement un tableau.
$iFlags [optionnel] Ajoutez plusieurs valeurs, autant que n�cessaire:
$FRTA_NOCOUNT (0) - le tableau est index� � partir de 0, utilisez UBound() pour obtenir sa taille
$FRTA_COUNT (1) - le nombre d'�l�ments est dans le premier �l�ment. (par d�faut)
$FRTA_INTARRAYS (2) - Cr�e un "tableau de tableau" - voir Remarques
$FRTA_ENTIRESPLIT (4) - Utilise une cha�ne avec d�limiteurs comme point de partage (par d�faut chaque caract�re d�finit un point de partage)
$sDelimiter [optionnel]
Utilis� pour diviser davantage chaque ligne du fichier - par exemple la lecture des fichiers CSV dans un tableau 2D

Valeur de retour

Succ�s: Retourne 1 et $vReturn qui contient le tableau.
�chec: Retourne 0, et d�finit @error <> 0 et $vReturn = 0.
@error: 1 - Erreur d'ouverture du fichier
2 - Impossible de scinder le fichier
3 - Les lignes du fichier ont des nombres diff�rents de champs (seulement si le flag $FRTA_INTARRAYS n'est pas lev�)
4 - Aucun d�limiteur trouv� (seulement si le flag $FRTA_INTARRAYS n'est pas lev�)

Remarques

Si le d�limiteur n'est pas sp�cifi�, la fonction retourne un tableau 1D dans lequel chaque �l�ment contient une ligne du fichier - les terminaisons de ligne peuvent �tre n'importe quelle combinaison de @CR, @LF et @CRLF.

Lorsqu'un d�limiteur est sp�cifi� la fonction essaie de diviser davantage chaque ligne du fichier - la fa�on dont elle proc�de d�pend de la position du flag $FRTA_INTARRAYS.
Si le flag n'est pas lev� et si chaque ligne a le m�me nombre de champs s�par�es par le d�limiteur alors un tableau 2D est cr��, mais si ce n'est pas le cas, alors @error est d�fini � 3 et aucun tableau n'est retourn�.
Si le flag $FRTA_INTARRAYS est lev� la fonction cr�e un tableau 1D o� chaque �l�ment est un autre tableau contenant les champs de la ligne �clat�e suivant le d�limiteur - les lignes n'ont pas besoin d'avoir le m�me nombre de champs. Voir l'exemple ci-dessous.

Si le d�limiteur comprend plusieurs caract�res, alors le flag $FRTA_ENTIRESPLIT d�termine la m�thode d'�clatement.

En relation

_FileWriteFromArray

Exemples

Exemple 1

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

Example()

Func Example()
    Local $aRetArray, $sFilePath = @TempDir & "\Test.txt"

    ; Cr�e un tableau 1D
    Local $aArray[] = ["0", "1", "2", "3", "4"]
    ; Ecrit dans le fichier
    _FileWriteFromArray($sFilePath, $aArray, Default, Default, @CRLF)
    Sleep(1000)

    ; Le relit - avec compteur
    _FileReadToArray($sFilePath, $aRetArray)
    _ArrayDisplay($aRetArray, "Tableau 1D avec compteur", Default, 8)

    ; Le relit sans compteur
    _FileReadToArray($sFilePath,$aRetArray, $FRTA_NOCOUNT)
    _ArrayDisplay($aRetArray, "Tableau 1D - sans compteur", Default, 8)

    ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    ; Cr�e un tableau "carr�" 2D
    Local $aArray[][] = [ _
            ["00", "01", "02", "03"], _
            ["10", "11", "12", "13"], _
            ["20", "21", "22", "23"], _
            ["30", "31", "32", "33"]]
    _ArrayDisplay($aArray, "Original", Default, 8)
    ; Ecrit dans le fichier
    _FileWriteFromArray($sFilePath, $aArray, Default, Default, ",")
    Sleep(1000)

    ; Le relit - avec compteur
    _FileReadToArray($sFilePath, $aRetArray, Default, ",")
    _ArrayDisplay($aRetArray, "Tableau 2D - avec compteur", Default, 8)

    ; Le relit - sans compteur
    _FileReadToArray($sFilePath, $aRetArray, $FRTA_NOCOUNT, ",")
    _ArrayDisplay($aRetArray, "Tableau 2D - sans compteur", Default, 8)

    ; Lit dans le "tableau de tableaux" sans compteur
    _FileReadToArray($sFilePath, $aRetArray, $FRTA_COUNT + $FRTA_INTARRAYS, ",")
    _ArrayDisplay($aRetArray, "Tableau de tableaux - avec compteur", Default, 8)
    ; Maintenant, regarde � l'int�rieur du tableau de tableau retourn�
    _ArrayDisplay($aRetArray[1], "Tableau 1 dans RetArray - avec compteur", Default, 8)

    ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    ; R��crit un tableau 2D avec plusieurs d�limiteurs
    _FileWriteFromArray($sFilePath, $aArray, Default, Default, ":|")
    Sleep(1000)

    ; Relit en consid�rant chaque d�limiteur comme un point de scission
    _FileReadToArray($sFilePath, $aRetArray, $FRTA_NOCOUNT, ":|")
    _ArrayDisplay($aRetArray, "Eclate sur chaque caract�re", Default, 8)

    ; Relit en consid�rant l'ensemble des d�limiteurs comme point de scission
     _FileReadToArray($sFilePath, $aRetArray, $FRTA_NOCOUNT + $FRTA_ENTIRESPLIT, ":|")
    _ArrayDisplay($aRetArray, "Eclate sur l'ensemble des caract�res", Default, 8)

    FileDelete($sFilePath)
EndFunc   ;==>Example


Exemple 2

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

Example()

Func Example()
    ; D�finit une variable pour passer � _FileReadToArray.
    Local $aArray = 0

    ; Lit le fichier script courant dans un tableau en utilisant la variable d�finie pr�c�demment.
    ; $iFlag est d�finie � 0, le nombre d'�l�ments du tableau ne sera pas d�fini. Utilisez UBound() pour trouver la taille du tableau.
    If Not _FileReadToArray(@ScriptFullPath, $aArray, 0) Then
        MsgBox($MB_SYSTEMMODAL, "", "Une erreur est survenue lors de la lecture du fichier. @error: " & @error) ; Une erreur s'est produite en lecture du fichier du script courant.
    EndIf

    ; Affiche le tableau avec la fonction _ArrayDisplay.
    _ArrayDisplay($aArray)
EndFunc   ;==>Example