DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Fonctions standard / Fonctions de gestion des fichiers externes
  • Gestion des erreurs
  • Fonctionnement sous Windows Vista (et supérieur)
  • Mode d'ouverture du fichier
  • Ouvertures multiples d'un même fichier
  • Position dans le fichier
  • Concaténation de plusieurs fichiers externes
  • Compatibilité entre les différentes versions de WINDEV/WEBDEV
  • Blocage et déblocage
  • Gestion des fichiers texte au format UNICODE
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Ouvre un fichier externe (ANSI ou UNICODE) pour le manipuler par programmation.
Remarques :
  • Pour manipuler des fichiers externes de type texte, il est conseillé d'utiliser les fonctions fChargeTexte/fSauveTexte et fChargeBuffer/fSauveBuffer.
  • Pour manipuler des fichiers externes de type binaire, utilisez les fonctions fCrée ou fOuvre.
  • Pour ouvrir et afficher un fichier externe dans le logiciel associé (par exemple pour afficher sous Word un fichier .DOC), utilisez la fonction LanceAppliAssociée.
WINDEVWEBDEV - Code ServeurEtats et RequêtesJavaCode Utilisateur (MCU)PHPAjax
// Ouverture d'un fichier externe
ResOuverture est un entier
ResOuverture = fOuvre("C:\MesRépertoires\Fichier.txt", foLectureEcriture)
SI ResOuverture <> -1 ALORS 
	...
FIN
WINDEVWEBDEV - Code ServeurEtats et RequêtesJavaCode Utilisateur (MCU)PHPAjax
// Ouverture d'un fichier externe
MonFichierExterne est un FichierDisque
MonFichierExterne = fOuvre("C:\MesRépertoires\Fichier.txt", foLectureEcriture)
SI PAS ErreurDétectée ALORS
	...
FIN
WINDEVWEBDEV - Code ServeurEtats et RequêtesJavaCode Utilisateur (MCU)PHPAjax
// Ouverture d'un fichier externe
MonFichierExterne est un FichierDisque
ResOuverture est un booléen
ResOuverture = fOuvre(MonFichierExterne, "C:\MesRépertoires\Fichier.txt", foLectureEcriture)
SI ResOuverture ALORS
	...
FIN
Syntaxe

Ouvrir un fichier externe Masquer les détails

<Résultat> = fOuvre(<Fichier à manipuler> [, <Mode d'ouverture>])
<Résultat> : Entier ou variable de type FichierDisque
Correspond à :
  • un entier :
    • l'identifiant du fichier externe. Cet identifiant sera utilisé dans toutes les fonctions de manipulation des fichiers externes.
    • -1 en cas d'erreur. Pour connaître le libellé de l'erreur, utilisez la fonction ErreurInfo avec la constante errMessage.
  • une variable de type FichierDisque. En cas d'erreur, la variable ErreurDétectée est à Vrai. Pour connaître le libellé de l'erreur, utilisez la fonction ErreurInfo avec la constante errMessage.
    PHP Non disponible.
<Fichier à manipuler> : Chaîne de caractères
Nom et chemin complet (ou relatif) du fichier (260 caractères maximum). Un chemin de type UNC peut être utilisé.

AndroidWidget Android Ce paramètre peut correspondre à un chemin complet ou relatif par rapport au répertoire en cours (connu avec la fonction fRepEnCours). Ce paramètre est sensible à la casse.
Rappel : Sous Android, sur l'appareil comme sur l'émulateur, le système de fichiers est en lecture seule. Une application a uniquement le droit d'écrire dans son répertoire d'installation ou dans un de ses sous-répertoires, ainsi que sur la mémoire externe (SDCard).


iPhone/iPadWidget IOSMac Catalyst Ce paramètre peut correspondre à un chemin complet ou relatif par rapport au répertoire en cours (connu avec la fonction fRepEnCours). Ce paramètre est sensible à la casse.
Rappel : Sous les iPhone/iPad, une application a uniquement le droit d'écrire dans son répertoire d'installation ou dans un de ses sous-répertoires.
<Mode d'ouverture> : Constante (ou combinaison de constantes) optionnelle
Constantes permettant de définir le mode d'ouverture du fichier, le mode d'accès au fichier et le mode de blocage du fichier.
  • Mode d'ouverture du fichier :
    foAjoutOuverture du fichier en "ajout". A l'ouverture, la position en cours correspond au dernier octet du fichier.
    foCréationCréation du fichier. Si le fichier existe déjà (même répertoire, même nom), ce fichier est détruit et recréé.
    foCréationSiInexistantCréation du fichier uniquement si ce fichier n'existe pas. La position en cours correspond au premier octet du fichier.
  • Mode d'accès au fichier. Ce type est utilisé par les fonctions fLitLigne et fEcritLigne pour déterminer le type des informations à lire et écrire dans le fichier externe :
    foAnsiFichier de type Ansi. Cette constante permet de gérer un fichier Ansi lorsque le mode "Utiliser les chaînes Unicode en exécution" est activé au niveau de la configuration de projet.
    Mode utilisé par défaut :
    • dans les projets WINDEV et WEBDEV inférieurs à la version 17.
    • dans les configurations de projet WINDEV et WEBDEV utilisant le mode "Utiliser les chaînes Ansi en exécution" à partir de la version 17.
    foUnicodeFichier de type Unicode. Cette constante permet de gérer un fichier Unicode lorsque le mode "Utiliser des chaînes ANSI en exécution" est activé au niveau de la configuration de projet.
    Mode utilisé par défaut :
    • dans les projets WINDEV Mobile quels que soient le mode et la version utilisés.
    • dans les configurations de projet WINDEV et WEBDEV utilisant le mode "Utiliser les chaînes Unicode en exécution" à partir de la version 17.
    PHP Cette constante n'est pas disponible.
  • Mode de blocage du fichier :
    foBloqueEcritureLes autres applications ne pourront pas modifier le fichier en cours.
    LinuxAndroidWidget AndroidJavaPHP Cette constante n'est pas disponible.
    foBloqueLectureLes autres applications ne pourront pas lire le fichier en cours.
    LinuxAndroidWidget AndroidJavaPHP Cette constante n'est pas disponible.
    foEcritureOuverture du fichier en "écriture seule". Il sera uniquement possible de modifier ce fichier.
    AndroidWidget AndroidJava Cette constante n'est pas disponible.
    foLectureOuverture du fichier en "lecture seule". Il sera uniquement possible de lire dans ce fichier.
    foLectureEcriture
    (Valeur par défaut)
    Ouverture du fichier en "lecture/écriture". Il sera possible de lire et de modifier ce fichier (équivalent à foLecture+foEcriture).
    foSuppressionAutomatiqueLe fichier est bloqué lors de son ouverture et sera automatiquement supprimé à sa fermeture (appel de la fonction fFerme ou à la fin de l'application).
    Si ce fichier est ouvert par plusieurs applications, le fichier sera automatiquement supprimé lorsque la dernière application fermera le fichier (appel de la fonction fFerme ou à la fin de l'application).
    Linux Cette constante n'est pas disponible.
    Java Si le fichier est utilisé par une autre application lors de sa fermeture (appel de la fonction fFerme ou à la fin de l'application), il ne sera pas supprimé.
  • Autres options :
    foAccèsSéquentielOptimise la gestion des caches pour le fichier en indiquant à Windows que le fichier va être lu du début à la fin.
    AndroidWidget AndroidJavaPHP Cette constante n'est pas disponible.

Ouvrir un fichier externe et initialiser une variable de type FichierDisque Masquer les détails

<Résultat> = fOuvre(<FichierDisque> , <Fichier à manipuler> [, <Mode d'ouverture>])
<Résultat> : Booléen
  • Vrai si le fichier a été ouvert et associé à la variable de type FichierDisque,
  • Faux dans le cas contraire. Pour connaître le libellé de l'erreur, utilisez la fonction ErreurInfo avec la constante errMessage.
<FichierDisque> : Variable de type FichierDisque
Nom de la variable FichierDisque qui sera associée au fichier texte manipulé.
<Fichier à manipuler> : Chaîne de caractères
Nom et chemin complet (ou relatif) du fichier (260 caractères maximum). Un chemin de type UNC peut être utilisé.

AndroidWidget Android Ce paramètre peut correspondre à un chemin complet ou relatif par rapport au répertoire en cours (connu avec la fonction fRepEnCours). Ce paramètre est sensible à la casse.
Rappel : Sous Android, sur l'appareil comme sur l'émulateur, le système de fichiers est en lecture seule. Une application a uniquement le droit d'écrire dans son répertoire d'installation ou dans un de ses sous-répertoires, ainsi que sur la mémoire externe (SDCard).


iPhone/iPadWidget IOSMac Catalyst Ce paramètre peut correspondre à un chemin complet ou relatif par rapport au répertoire en cours (connu avec la fonction fRepEnCours). Ce paramètre est sensible à la casse.
Rappel : Sous les iPhone/iPad, une application a uniquement le droit d'écrire dans son répertoire d'installation ou dans un de ses sous-répertoires.
<Mode d'ouverture> : Constante (ou combinaison de constantes) optionnelle
Constantes permettant de définir le mode d'ouverture du fichier, le mode d'accès au fichier et le mode de blocage du fichier.
  • Mode d'ouverture du fichier :
    foAjoutOuverture du fichier en "ajout". A l'ouverture, la position en cours correspond au dernier octet du fichier.
    foCréationCréation du fichier. Si le fichier existe déjà (même répertoire, même nom), ce fichier est détruit et recréé.
    foCréationSiInexistantCréation du fichier uniquement si ce fichier n'existe pas. La position en cours correspond au premier octet du fichier.
  • Mode d'accès au fichier. Ce type est utilisé par les fonctions fLitLigne et fEcritLigne pour déterminer le type des informations à lire et écrire dans le fichier externe :
    foAnsiFichier de type Ansi. Cette constante permet de gérer un fichier Ansi lorsque le mode "Utiliser les chaînes Unicode en exécution" est activé au niveau de la configuration de projet.
    Mode utilisé par défaut :
    • dans les projets WINDEV et WEBDEV inférieurs à la version 17.
    • dans les configurations de projet WINDEV et WEBDEV utilisant le mode "Utiliser les chaînes Ansi en exécution" à partir de la version 17.
    foUnicodeFichier de type Unicode. Cette constante permet de gérer un fichier Unicode lorsque le mode "Utiliser des chaînes ANSI en exécution" est activé au niveau de la configuration de projet.
    Mode utilisé par défaut :
    • dans les projets WINDEV Mobile quels que soient le mode et la version utilisés.
    • dans les configurations de projet WINDEV et WEBDEV utilisant le mode "Utiliser les chaînes Unicode en exécution" à partir de la version 17.
    PHP Cette constante n'est pas disponible.
  • Mode de blocage du fichier :
    foBloqueEcritureLes autres applications ne pourront pas modifier le fichier en cours.
    LinuxAndroidWidget AndroidJavaPHP Cette constante n'est pas disponible.
    foBloqueLectureLes autres applications ne pourront pas lire le fichier en cours.
    LinuxAndroidWidget AndroidJavaPHP Cette constante n'est pas disponible.
    foEcritureOuverture du fichier en "écriture seule". Il sera uniquement possible de modifier ce fichier.
    AndroidWidget AndroidJava Cette constante n'est pas disponible.
    foLectureOuverture du fichier en "lecture seule". Il sera uniquement possible de lire dans ce fichier.
    foLectureEcriture
    (Valeur par défaut)
    Ouverture du fichier en "lecture/écriture". Il sera possible de lire et de modifier ce fichier (équivalent à foLecture+foEcriture).
    foSuppressionAutomatiqueLe fichier est bloqué lors de son ouverture et sera automatiquement supprimé à sa fermeture (appel de la fonction fFerme ou à la fin de l'application).
    Si ce fichier est ouvert par plusieurs applications, le fichier sera automatiquement supprimé lorsque la dernière application fermera le fichier (appel de la fonction fFerme ou à la fin de l'application).
    Linux Cette constante n'est pas disponible.
    Java Si le fichier est utilisé par une autre application lors de sa fermeture (appel de la fonction fFerme ou à la fin de l'application), il ne sera pas supprimé.
  • Autres options :
    foAccèsSéquentielOptimise la gestion des caches pour le fichier en indiquant à Windows que le fichier va être lu du début à la fin.
    AndroidWidget AndroidJavaPHP Cette constante n'est pas disponible.
Remarques

Gestion des erreurs

La fonction fOuvre génère une erreur dans les cas suivants :
  • le fichier n'existe pas,
  • le fichier est bloqué par un autre poste ou par une autre application,
  • l'utilisateur n'a pas les droits en lecture ou en écriture sur le fichier à ouvrir.
WINDEVWEBDEV - Code ServeurEtats et RequêtesCode Utilisateur (MCU)

Fonctionnement sous Windows Vista (et supérieur)

Si cette fonction ne fonctionne pas correctement sous Windows Vista (et supérieur), il est nécessaire de vérifier si le fichier ou le répertoire manipulé ne se trouve pas dans un des répertoires système (répertoire de Windows ou répertoire "Program Files").
En effet, sous Windows Vista (et supérieur), avec le mécanisme de l'UAC (contrôle des comptes utilisateurs) activé, il est nécessaire d'avoir les privilèges administrateur pour manipuler / modifier des fichiers ou des répertoires présents dans les répertoires système (répertoire de Windows ou répertoire "Program Files").
Conseil de programmation : Si vous devez manipuler / modifier des fichiers ou des répertoires, sans avoir besoin de privilèges administrateur, il est conseillé :
  • de ne pas écrire dans le répertoire de Windows ou dans le répertoire "Program Files",
  • d'utiliser le répertoire système correspondant à l'application (connu par la fonction SysRep par exemple avec la constante srAppDataCommun).

Mode d'ouverture du fichier

Par défaut, si le mode d'accès au fichier n'est pas spécifié, le fichier est ouvert selon l'attribut du fichier (défini sous Windows).
Si le mode d'accès spécifié ne correspond pas à l'attribut du fichier, une erreur est générée.
Un fichier en "lecture/écriture" pourra être ouvert dans tous les modes d'accès proposés par fOuvre (constantes foEcriture, foLecture et foLectureEcriture).
Un fichier en "lecture seule" pourra être uniquement ouvert en mode "lecture seule" (constante foLecture).

Ouvertures multiples d'un même fichier

Il est possible d'ouvrir un même fichier plusieurs fois en même temps. Chaque ouverture est associée à un identifiant de fichier différent. Chaque version du fichier doit être manipulée par son propre identifiant.

Position dans le fichier

A l'ouverture d'un fichier, la position en cours correspond :
  • au premier octet du fichier,
  • au dernier octet du fichier si le fichier est ouvert en "ajout" (constante foAjout).
Cette position peut être modifiée par la fonction fPositionne.

Concaténation de plusieurs fichiers externes

Pour concaténer plusieurs fichiers externes, il faut :
  • ouvrir le fichier destination en "ajout" (constante foAjout),
  • ouvrir le fichier source en "lecture" (constante foLecture ou foLectureEcriture),
  • lire le fichier source ligne à ligne avec la fonction fLitLigne,
  • écrire dans le fichier destination ligne à ligne avec la fonction fEcritLigne.

Compatibilité entre les différentes versions de WINDEV/WEBDEV

Les constantes foTexte (ouverture en mode texte) et foBinaire (ouverture en mode binaire) ne sont plus nécessaires. Elles sont remplacées par la valeur 0. Dans ce cas, la fonction fOuvre tente d'ouvrir le fichier en lecture/écriture.
WINDEVWEBDEV - Code ServeurEtats et RequêtesUniversal Windows 10 AppCode Utilisateur (MCU)Ajax

Blocage et déblocage

Un fichier bloqué dès son ouverture (constantes foBloqueLecture ou foBloqueEcriture) sera automatiquement débloqué lors de sa fermeture (avec la fonction fFerme).
WINDEVWEBDEV - Code ServeurEtats et RequêtesAndroidWidget AndroidJavaCode Utilisateur (MCU)Ajax

Gestion des fichiers texte au format UNICODE

La fonction fOuvre permet de lire et d'écrire des fichiers texte au format UNICODE "UTF-16 little endian".
  • fOuvre(<Nom du fichier>, foLecture + foUnicode) : Permet d'ouvrir un fichier Unicode. Si la marque "Unicode courant" (FFFE) est trouvée au début du fichier, elle est automatiquement lue.
  • fOuvre(<Nom du fichier>, foCréation + foUnicode) : Permet de créer un fichier Unicode. La marque "Unicode courant" (FFFE) est automatiquement ajoutée au début du fichier.
  • fOuvre(<Nom du fichier>, foCréationSiInexistant + foUnicode) : Permet de créer un fichier UNICODE si ce fichier n'existe pas. La marque "UNICODE courant" (FFFE) est automatiquement ajoutée au début du fichier si celui-ci est effectivement créé. Si le fichier existe et s'il commence par la marque "UNICODE courant" (FFFE), cette marque est automatiquement lue.
Liste des exemples associés :
Manipulation de fichiers texte Exemples unitaires (WINDEV) : Manipulation de fichiers texte
[ + ] Manipulation des fichiers "texte" avec WINDEV :
- Créer un fichier texte
- Ecrire dans un fichier texte
- Lire dans un fichier texte
Manipulation de fichiers texte Exemples unitaires (WEBDEV) : Manipulation de fichiers texte
[ + ] Manipulation des fichiers "non HFSQL" avec WEBDEV (création d'un fichier texte, écriture et lecture)
Manipulation de fichiers texte Exemples unitaires (WINDEV Mobile) : Manipulation de fichiers texte
[ + ] Manipulation des fichiers externes de type "texte" :
- Créer un fichier texte
- Ecrire dans un fichier texte
- Lire dans un fichier texte
Classification Métier / UI : Code métier
Composante : wd300std.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Comment connaitre le format d'un fichier ?
Si on reçoit des fichiers parfois en UNICODE et parfois en ANSI, comment faire pour connaitre le format afin de bien traiter les données à lire ?
Damien 10
24 mar. 2023

Dernière modification : 19/08/2024

Signaler une erreur ou faire une suggestion | Aide en ligne locale