Lire depuis le fichier de données

Lit les données d'un fichier de données ouvert.

Options 

  • ID de fichier est une expression numérique qui indique l'ID d'un fichier de données ouvert. Consultez la section action de script Ouvrir un fichier de données.
  • Quantité spécifie le nombre d'octets à lire si Lire au format est UTF-8 ou Octets. Pour UTF-16, Quantité est le nombre d'unités de code Unicode à lire. Si le paramètre Quantité n'est pas indiqué, le fichier entier est lu.
  • Cible est la rubrique ou la variable où sont stockées les données lues depuis le fichier.
  • Lire au format spécifie le codage de caractères du fichier.
    • UTF-16 est le codage de caractères Unicode 16 bits (UTF-16 Little Endian) par défaut de FileMaker.
    • UTF-8 est le codage de caractère Unicode 8 bits.
    • Octets ne suppose aucun codage de caractères spécifique, mais lit un octet à la fois. Si la cible est une variable ou une rubrique Conteneur, les données lues depuis le fichier sont stockées sous forme de données de conteneur portant le même nom de fichier que le fichier spécifié.

Compatibilité 

Produit Prise en charge
FileMaker Pro Oui
FileMaker Go Oui
FileMaker WebDirect Non
FileMaker Server Oui
FileMaker Cloud Oui
FileMaker Data API Non
Publication Web personnalisée Oui

Provient de la version 

18.0

Description 

Cette action de script lit les données spécifiées par Quantité en commençant à la position de lecture/écriture actuelle, ou lit le fichier entier si le paramètre Quantité n'est pas indiqué. Consultez la section Définir l'emplacement du fichier de données.

La taille maximale des données pouvant être lues simultanément par cette action de script est de 64 Mo. Si la taille d'un fichier est supérieure à 64 Mo, vous pouvez exécuter cette action de script plusieurs fois, en lisant à chaque fois des données dont la taille ne dépasse pas 64 Mo.

Remarques 

  • afin d'obtenir des performances optimales.
  • Lors de la lecture de texte Unicode depuis une partie d'un fichier, seule une partie d'un caractère peut être lue si ce dernier se compose de plusieurs unités de code. Si vous souhaitez lire du texte depuis un fichier UTF-8 ou UTF-16, il peut être plus prudent de lire le fichier entier en une fois à moins d'être sûr du nombre de points de code par caractère.

Exemple 1 

Lit le contenu d'un fichier ouvert avec un ID de fichier de 2 et stocke les données dans une variable.

Copier
Lire depuis le fichier de données [ ID de fichier: 2 ; Quantité (octets): ; Cible: $variable ; Lire au format: Octets ]

Exemple 2 

Vérifie l'existence d'un fichier nommé change.log dans le dossier Documents. Si c'est le cas, lit les 100 premières unités de code UTF-8 de la rubrique Texte Utilitaires::Entrée de journal

Copier
Définir variable [ $file ; Valeur: Obtenir ( CheminDocuments ) & "change.log" ]
Vérifier l'existence du fichier [ "$file" ; Cible: $fileExists ]
Si [ Not $fileExists ]
    Fin de script [ Résultat de texte: ]
Fin de si
Ouvrir un fichier de données [ "$file" ; Cible: $fileID ]
Lire depuis le fichier de données [ ID de fichier: $fileID ; Quantité (octets): 100 ; Cible: Utilitaires::Entrée de journal ; Lire au format: UTF-8 ]
Fermer le fichier de données [ ID de fichier: $fileID ]

Exemple 3 

Si le fichier large.log existe et est volumineux, lit le fichier 64 Mo à la fois dans une variable jusqu'à ce que le fichier entier soit lu. Si la taille du fichier est inférieure, lit le fichier entier en une fois. Les données sont lues dans une variable afin d'améliorer les performances, puis les données sont stockées dans une rubrique.

Copier
Gestion erreurs [ Oui ]
Définir variable [ $k_FileMissingError ; Valeur: 100 ] 
Définir variable [ $k_EndOfFileError ; Valeur: 10 ]
Définir variable [ $k_64KB ; Valeur: 64 * 1024 ]
Définir variable [ $k_64MB ; Valeur: 64 * 1024 * 1024 ]
Définir variable [ $file ; Valeur: "large.log" ]
Vérifier l'existence du fichier [ "$file" ; Cible: $fileExists ]
Si [ $fileExists = 0 ]
    Fin de script [ Résultat de texte: $k_FileMissingError ]
Fin de si

Ouvrir un fichier de données [ "$file" ; Cible: $fileID ] 

#Si le fichier a été ouvert avec succès, lit le contenu.
Si [ Obtenir ( DernièreErreur ) = 0 ] 
     Obtenir la taille du fichier [ "$file" ; Cible: $fileSize ] 

    #Si la taille du fichier est supérieure à 64 Mo, lit le fichier 64 Mo à la fois.
    Si [ $fileSize > $k_64KB ]

        Boucle [ Purge: Systématique ]
            #Lit jusqu'à 64 Mo et stocke les données dans une variable.
            Lire depuis le fichier de données [ ID de fichier: $fileID ; Quantité (octets): $k_64MB ; Cible: $dataChunk ; Lire au format: UTF-8 ]
             Définir variable [ $readError ; Valeur: Obtenir ( DernièreErreur ) ]

            #Si l'opération de lecture a réussi ou si la fin du fichier a été atteinte, concatène les données lues lors de ce passage ($dataChunk) avec les données lues précédemment ($fileContents).
            Si [ ( $readError = 0 ) Or ( $readError = $k_EndOfFileError ) ] 
                 Définir variable [ $fileContents ; Valeur: $fileContents & $dataChunk ]
             Fin de si 

            #Quitte la boucle si l'opération de lecture a échoué ou si la fin du fichier a été atteinte.
            Fin de boucle si [ $readError ] 
         Fin de boucle 

     Sinon 
        #Si la taille du fichier ne dépasse pas 64 Ko, lit le fichier entier en une fois.
        Lire depuis le fichier de données [ ID de fichier: $fileID ; Cible: $fileContents ; Lire au format: UTF-8 ]
    Fin de si

    #Ferme le fichier de données et stocke son contenu dans une rubrique.
    Fermer le fichier de données [ ID de fichier: $fileID ] 
     Définir rubrique[ Table::Données ; $fileContents ] 

Fin de si