DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Fonctions standard / Fonctions de gestion des fichiers externes
  • Présentation
  • Les différents types de stockage
  • Stockage interne
  • Stockage externe
  • Fonctions WLangage disponibles pour gérer les différentes zones de stockage
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
Présentation
Le système de fichiers des appareils sous Android est divisé en deux zones de stockage principales :
  • une zone dite "interne".
  • une zone dite "externe" ou "partagée".
A partir de Android 11, de nouvelles restrictions apparaissent pour les emplacements accessibles aux applications. Pour plus de détails sur les emplacements autorisés, consultez Android 11 : Modifications du comportement des applications.
Les différents types de stockage

Stockage interne

La zone de stockage interne se situe dans la mémoire non volatile et non amovible de l'appareil (que l'on nomme mémoire permanente). Cette zone de stockage interne contient entre autres les fichiers système de l'OS.
Par défaut, les applications sont installées dans cette zone de stockage. Il est possible d'installer certaines applications sur l'espace de stockage externe avec certaines restrictions.
L'espace de stockage interne est toujours disponible pour une application même si l'appareil est connecté par USB à un ordinateur par exemple.
Une application peut créer, modifier ou supprimer des fichiers uniquement dans son propre répertoire (présent dans la zone de stockage interne). Ce répertoire est automatiquement créé lors de l'installation de l'application. Il se nomme généralement "/data/data/<Nom de package complet de l'application>. Par exemple : /data/data/fr.pcsoft.MonApplication. Les fichiers contenus dans ce répertoire ne sont pas accessibles par les autres applications.
Lors de la désinstallation de l'application, les fichiers créés dans ce répertoire et ses sous-répertoires sont automatiquement supprimés par le système.

Stockage externe

La zone de stockage externe peut se situer :
  • dans la mémoire permanente de l'appareil,
  • et/ou dans de la mémoire amovible (carte de stockage type SD Card).
Certains appareils divisent leur mémoire permanente en deux partitions, une dédiée au stockage interne et l'autre au stockage externe. Ainsi, même les appareils dépourvus d'emplacement pour une SDCard disposent bien deux zones de stockage distinctes.
Il est possible de trouver plusieurs zones de stockage externe sur un même appareil : par exemple, l'une correspond à la partition "externe" de la mémoire permanente et l'autre à la SDCard. Dans ce cas, on parle de zone de stockage externe primaire, secondaire, etc. Le choix de l'attribution de la zone de stockage primaire à tel ou tel emplacement dépend du constructeur.
La zone de stockage externe peut ne pas être accessible pour une application à un moment donné. C'est par exemple le cas lorsque l'application est connectée à l'ordinateur en mode stockage de masse USB.
Une application peut accéder en lecture ET en écriture à tous les fichiers et répertoires situés sur la ou les zone(s) de stockage externe de l'appareil.
Chaque application peut disposer de son propre répertoire dans chacune des zones de stockage externe de l'appareil.
  • Le nom de ce répertoire est généralement de la forme  : <racine stockage externe>/Android/data/<Nom de package complet de l'application>. Par exemple : /mnt/sdcard/Android/data/fr.pcsoft.MonApplication.
  • Ce répertoire doit contenir les fichiers privés de l'application qui n'ont pas besoin d'être partagés avec d'autres applications (bien que n'importe quelle application puisse y avoir accès).
  • Ce répertoire peut contenir des sous-répertoires avec des noms système prédéfinis pour le stockage des différents types de fichiers (musique, film, documents, téléchargement, etc.). Une utilisation correcte de ces répertoires prédéfinis permet une meilleure prise en charge de ces fichiers par le système.
  • Les fichiers contenus dans le répertoire de l'application ne sont pas automatiquement scannés par le système (bien qu'il soit possible de le demander explicitement). Par exemple, les photos sauvegardées dans ce répertoire ne seront pas répertoriées dans les albums photo de l'appareil.
  • Ce répertoire et les données qu'il contient seront automatiquement supprimés lors de la désinstallation de l'application.
Remarque : A partir d'Android 4.4 (KitKat), sur l'espace de stockage externe correspondant à de la mémoire amovible (SDCard), les applications peuvent créer, modifier ou supprimer de fichiers uniquement dans leur propre répertoire. Les autres fichiers de l'espace de stockage externe sont accessibles en lecture uniquement.
Si une application possède des fichiers publics qu'elle doit partager avec d'autres applications, il est recommandé de les stocker en dehors de son propre répertoire. Dans ce cas, les fichiers ne seront pas supprimés lors de la désinstallation de l'application.
L'espace de stockage primaire de l'appareil peut contenir des répertoires avec des noms système prédéfinis pour le stockage des différents types de fichiers publics d'une application (musique, film, documents, téléchargement, etc.). Une utilisation correcte de ces répertoires prédéfinis permet une meilleure prise en charge des fichiers par le système. En particulier, ces répertoires sont régulièrement scannés par le système pour être répertoriés et proposés par exemple lors de la sélection de médias.
Permissions  :
  • La permission READ_EXTERNAL_STORAGE est nécessaire pour accéder en lecture aux fichiers situés dans l'espace de stockage externe. Cette permission est automatique sur les appareils utilisant une version d'Android inférieure à 4.4.
  • La permission WRITE_EXTERNAL_STORAGE est nécessaire pour accéder en écriture (création, modification, suppression) aux fichiers situés dans l'espace de stockage externe. Cette permission donne également implicitement le droit de lecture.
A partir d'Android 4.4 (KitKat), ces permissions ne sont plus nécessaires pour l'accès aux fichiers situés dans le répertoire de l'application.
A partir de Android 10, une application doit uniquement accéder aux fichiers présents dans des répertoires de l'application. L'accès à des fichiers situés en dehors de ces répertoires (en lecture ou en écriture) pourront échouer. Il est recommandé de ne pas utiliser les constantes du type ssePublicxxx (avec la fonction SysRepStockageExterne par exemple) pour éviter tout problème.
Remarque : Pour les applications Android utilisées sous Android 10 et générées avec WINDEV Mobile, le fonctionnement est inchangé (si vous utilisez le correctif 118661 ou la version 250Update 4 de WINDEV Mobile).
Lorsque l'application est exécutée sous Android 11, de nouvelles restrictions apparaissent :
  • une application ne peut plus lire ou écrire de fichiers sur le stockage externe en dehors :
    • des répertoires publics "Documents", "Download", "Images", etc. : utilisation de la fonction SysRepStockageExterne avec les constantes ssePublicXXX.
    • des répertoires propres à l'application : utilisation de la fonction SysRepStockageExterne avec les constantes sseAppXXX.
  • dans les répertoires publics, une application peut accéder (en lecture ou en écriture) uniquement aux fichiers qu'elle a elle-même créés.
    Remarque : si l'application est désinstallée puis réinstallée, elle n'aura plus accès aux fichiers créés par la précédente installation dans les répertoires publics du stockage externe.

Pour plus de détails, consultez Android 11 : Modifications du comportement des applications.
Fonctions WLangage disponibles pour gérer les différentes zones de stockage
Le WLangage propose plusieurs fonctions permettant de gérer et de connaître les différents espaces de stockage :
fRepCacheRenvoie le chemin du répertoire à utiliser pour stocker les données en cache de l'application sur l'espace de stockage interne de l'application.
fRepDonnéesRenvoie le chemin du répertoire utilisé pour le stockage des fichiers de base de données de l'application dans la zone de stockage interne.
Exemple : /data/data/fr.pcsoft.MonApplication/database
fRepEnCoursRenvoie le chemin du répertoire utilisé pour le stockage des fichiers privés de l'application dans la zone de stockage interne.
Exemple : /data/data/fr.pcsoft.MonApplication/files
fRepExeRenvoie le chemin racine du répertoire de l'application dans la zone de stockage interne.
Exemple : /data/data/fr.pcsoft.MonApplication
SysCacheStockageExterneRenvoie le chemin du répertoire à utiliser pour stocker les données en cache de l'application sur l'espace de stockage externe de l'application.
SysEspaceRenvoie la place libre ou totale de la zone de stockage externe primaire.
SysEtatCarteStockageRenvoie l'état de disponibilité de la zone de stockage externe primaire : disponible/lecture seule/indisponible.
SysEtatStockageExterneRenvoie l'état de disponibilité de l'espace de stockage externe de l'appareil.
SysMémoireStockageExterneRenvoie la quantité de mémoire disponible sur la zone de stockage externe de l'appareil.
SysNbStockageExterneRenvoie le nombre d'espaces de stockage externe présents sur un appareil Android.
SysRepCarteStockageRenvoie le chemin du répertoire racine de la zone de stockage externe primaire.
Exemple : /mnt/sdcard
SysRepStockageExterneRenvoie le chemin d'un répertoire pour le stockage de fichiers dans l'espace de stockage externe d'un appareil Android.
SysStockageExterneAmoviblePermet de savoir si l'espace de stockage externe correspond à de la mémoire amovible (SD Card).
Version minimum requise
  • Version 21
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 25/05/2022

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