Get to know MDN better
Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
Contexte sécurisé: Cette fonctionnalité est uniquement disponible dans des contextes sécurisés (HTTPS), pour certains navigateurs qui la prennent en charge.
Note : Cette fonctionnalité est disponible via les Web Workers.
L'API du système de fichiers — avec des extensions fournies via l'API d'accès au système de fichiers pour accéder aux fichiers sur le système de fichiers d'un périphérique — permet de lire, d'écrire et de gérer des fichiers.
Voir la relation avec d'autres API liées aux fichiers pour une comparaison entre cette API, l'API des entrées de fichiers et de répertoires et l'API de fichier.
Cette API permet d'interagir avec les fichiers présents sur le périphérique local d'un·e utilisateur·ice ou sur un système de fichiers réseau accessible à ces derniers. Les fonctionnalités de base incluent la lecture, l'écriture ou la sauvegarde de fichiers, ainsi que l'accès à la structure des répertoires.
La plupart des interactions avec les fichiers et les répertoires se font via des « handles ». La classe parente FileSystemHandle permet de définir deux classes enfants : FileSystemFileHandle et FileSystemDirectoryHandle, pour les fichiers et les répertoires respectivement.
Les handles représentent un fichier ou un répertoire sur le système de l'utilisateur·ice. Vous pouvez y accéder en affichant un sélecteur de fichier ou de répertoire à l'aide de méthodes telles que window.showOpenFilePicker() et window.showDirectoryPicker(). Une fois ces méthodes appelées, le sélecteur s'affiche et l'utilisateur·ice choisit un fichier ou un répertoire. Si la sélection est réussie, un handle est retourné.
Vous pouvez également accéder aux handles de fichiers via :
Chaque handle offre ses propres fonctionnalités et il existe quelques différences selon celui que vous utilisez (voir la section Interfaces pour plus de détails). Vous pouvez ensuite accéder aux données des fichiers ou aux informations (y compris les enfants) du répertoire sélectionné. Cette API apporte des fonctionnalités qui faisaient défaut au Web. Cependant, la sécurité a été la principale préoccupation lors de la conception de l'API, et l'accès aux fichiers ou répertoires est interdit sauf si l'utilisateur·ice l'autorise explicitement (ce qui n'est pas le cas avec le système de fichiers d'origine privé, qui n'est pas visible pour l'utilisateur·ice).
Note : Les différentes exceptions pouvant être levées lors de l'utilisation des fonctionnalités de cette API sont répertoriées sur des pages pertinentes, comme défini dans la spécification. Cependant, la situation est rendue plus complexe par l'interaction entre l'API et le système d'exploitation sous-jacent. Une proposition a été faite pour énumérer les mappages d'erreurs dans la spécification (angl.), qui inclut des informations utiles à ce sujet.
Note : Les objets basés sur FileSystemHandle peuvent également être sérialisés dans une base de données IndexedDB, ou transférés via postMessage().
Le système de fichiers d'origine privé (OPFS) est un point de terminaison de stockage fourni dans le cadre de l'API du système de fichiers, qui est privé pour l'origine de la page et non visible pour l'utilisateur·ice comme le système de fichiers classique. Il donne accès à un type spécial de fichier hautement optimisé pour les performances et offre un accès en écriture directe à son contenu.
Voici quelques cas d'utilisation possibles :
Applications avec téléchargement persistant
Jeux vidéo ou autres applications avec beaucoup de ressources multimédias
Éditeur audio ou photo avec accès hors ligne ou cache local (idéal pour les performances et la rapidité)
Visionnage vidéo hors ligne
Client de messagerie Web hors ligne
Lisez notre page sur le système de fichiers d'origine privé pour des instructions sur la façon de l'utiliser.
Contient des détails d'un seul changement observé par un FileSystemObserver.
FileSystemHandleUn objet qui représente un fichier ou une entrée de répertoire. Plusieurs handles peuvent représenter la même entrée. La plupart du temps, vous ne travaillez pas directement avec FileSystemHandle, mais plutôt avec ses interfaces enfants FileSystemFileHandle et FileSystemDirectoryHandle.
FileSystemFileHandleFournit un handle à une entrée du système de fichiers.
FileSystemDirectoryHandleFournit un handle à un répertoire du système de fichiers.
FileSystemObserverFournit un mécanisme pour observer les modifications des fichiers ou répertoires sélectionnés.
FileSystemSyncAccessHandleFournit un handle synchrone à une entrée du système de fichiers, qui fonctionne sur un seul fichier du disque. La nature synchrone des lectures et écritures de fichiers permet d'obtenir de meilleures performances pour les méthodes critiques dans les contextes où les opérations asynchrones entraînent une charge importante, par exemple : WebAssembly. Cette classe n'est accessible qu'à l'intérieur des Web Workers dédiés pour les fichiers dans le système de fichiers d'origine privé.
FileSystemWritableFileStreamUn objet WritableStream avec des méthodes supplémentaires pratiques, qui fonctionnent sur un seul fichier sur le disque.
Affiche un sélecteur de répertoire qui permet à l'utilisateur·ice de sélectionner un répertoire.
Window.showOpenFilePicker()Affiche un sélecteur de fichiers qui permet à un·e utilisateur·ice de sélectionner un fichier ou plusieurs fichiers.
Window.showSaveFilePicker()Affiche un sélecteur de fichiers qui permet à un·e utilisateur·ice d'enregistrer un fichier.
DataTransferItem.getAsFileSystemHandle()Renvoie une Promise (promesse) qui se réalise avec un FileSystemFileHandle si l'élément déplacé est un fichier ou s'accompagne avec un FileSystemDirectoryHandle si l'élément déplacé est un répertoire.
StorageManager.getDirectory()Utilisé pour obtenir une référence à un objet FileSystemDirectoryHandle permettant l'accès à un répertoire et son contenu, stocké dans le Système de fichiers privé d'origine. Renvoie une promesse Promise qui se complète avec un objet FileSystemDirectoryHandle.
Le code ci-dessous permet à l'utilisateur·ice de choisir un fichier dans le sélecteur de fichiers.
La fonction asynchrone suivante présente un sélecteur de fichiers et une fois qu'un fichier est choisi, utilise la méthode getFile() pour récupérer le contenu.
L'exemple suivant renvoie un répertoire avec le nom spécifié. Si le répertoire n'existe pas, il est créé.
La fonction asynchrone suivante utilise resolve() Pour trouver le chemin d'accès à un fichier choisi, par rapport à un handle de répertoire spécifié.
La fonction asynchrone suivante ouvre le sélecteur de fichiers de sauvegarde, qui renvoie un FileSystemFileHandle une fois un fichier sélectionné. Un flux accessible en écriture est ensuite créé à l'aide de la méthode FileSystemFileHandle.createWritable().
Un Blob défini par l'utilisateur·ice est ensuite écrit dans le flux qui est ensuite fermé.
Les suivants montrent différents exemples d'options qui peuvent être transmises dans la méthode write().
Cet exemple lit et écrit de manière synchrone un fichier au Système de fichiers d'origine privé.
La fonction de gestionnaire d'événements asynchrones suivante est contenue dans un Web Worker. En recevant un message du thread principal, elle :
Note : Dans les versions antérieures de la spécification, close(), flush(), getSize() et truncate() ont été spécifiés de manière non ergonomique comme méthodes asynchrones. Cela a maintenant été modifié (angl.), mais certains navigateurs soutiennent toujours les versions asynchrones.
| File System |
| File System Access |
Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.
Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.
Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.
Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.
Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.
Cette page a été modifiée le 2 oct. 2025 par les contributeur·ice·s du MDN.
Votre modèle pour un internet meilleur.
Visitez la société mère à but non lucratif de Mozilla Corporation, la Fondation Mozilla.
Certaines parties de ce contenu sont protégées par le droit d'auteur ©1998—2026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.