{"id":59501,"date":"2022-07-12T08:20:15","date_gmt":"2022-07-12T07:20:15","guid":{"rendered":"https:\/\/kinsta.com\/fr\/?p=59501&#038;post_type=knowledgebase&#038;preview_id=59501"},"modified":"2025-10-01T20:45:51","modified_gmt":"2025-10-01T19:45:51","slug":"nodejs-fs","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/","title":{"rendered":"Comprendre le module de syst\u00e8me de fichiers (FS) de Node.js"},"content":{"rendered":"<p>JavaScript est depuis longtemps l&rsquo;un des langages de script les plus populaires, mais pendant une longue p\u00e9riode, il n&rsquo;\u00e9tait pas un excellent choix pour le d\u00e9veloppement d&rsquo;applications backend c\u00f4t\u00e9 serveur. Puis est apparu Node.js, qui permet de cr\u00e9er des applications l\u00e9g\u00e8res c\u00f4t\u00e9 serveur, pilot\u00e9es par les \u00e9v\u00e9nements et construites \u00e0 l&rsquo;aide du langage de programmation JavaScript.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-ce-que-node-js\/\" rel=\"noopener\">Node.js est un moteur d&rsquo;ex\u00e9cution JavaScript \u00e0 code source ouvert<\/a> qui peut \u00eatre t\u00e9l\u00e9charg\u00e9 et install\u00e9 gratuitement sur tous les principaux syst\u00e8mes d&rsquo;exploitation (Windows, Mac, Linux). Il est devenu de plus en plus <a href=\"https:\/\/kinsta.com\/fr\/blog\/applications-node-js\/\" rel=\"noopener\">populaire aupr\u00e8s des cr\u00e9ateurs d&rsquo;applications<\/a> ces derni\u00e8res ann\u00e9es, et il a fourni de <a href=\"https:\/\/kinsta.com\/fr\/blog\/node-js-developpeur-salaire\/\" rel=\"noopener\">nombreuses nouvelles opportunit\u00e9s d&#8217;emploi<\/a> pour les d\u00e9veloppeurs JavaScript \u00e0 la recherche d&rsquo;une sp\u00e9cialit\u00e9.<\/p>\n\n<p>Dans cet article, nous allons apprendre \u00e0 g\u00e9rer le syst\u00e8me de fichiers \u00e0 l&rsquo;aide de Node.js. Il est facile d&rsquo;utiliser les API de Node.js pour interagir avec le syst\u00e8me de fichiers et effectuer de nombreuses op\u00e9rations complexes, et savoir comment les man\u0153uvrer stimulera votre productivit\u00e9.<\/p>\n<p>Plongeons !<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Pr\u00e9-requis pour la compr\u00e9hension du syst\u00e8me de fichiers de Node.js<\/h2>\n<p>Le premier pr\u00e9-requis est l&rsquo;installation de Node.js sur votre syst\u00e8me d&rsquo;exploitation. Node.js ne n\u00e9cessite aucun mat\u00e9riel complexe pour fonctionner, ce qui rend facile le <a href=\"https:\/\/kinsta.com\/fr\/blog\/comment-installer-node-js\/\">t\u00e9l\u00e9chargement et l&rsquo;installation de Node.js<\/a> sur votre ordinateur.<\/p>\n<p>Il serait utile que vous ayez \u00e9galement une <a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-javascript\/\" rel=\"noopener\">connaissance de base de JavaScript<\/a> pour travailler sur des modules Node.js comme les syst\u00e8mes de fichiers (\u00e9galement connus sous le nom de \u00ab File System ou FS \u00bb). Une compr\u00e9hension de haut niveau des fonctions JavaScript, des fonctions de rappel et des promesses <a href=\"https:\/\/kinsta.com\/fr\/blog\/meilleur-langage-programmation-apprendre\/#javascript\" rel=\"noopener\">vous aidera \u00e0 ma\u00eetriser ce sujet<\/a> encore plus rapidement.<\/p>\n<h2>Module de syst\u00e8me de fichiers de Node.js<\/h2>\n<p>Travailler avec des fichiers et des r\u00e9pertoires est l&rsquo;un des besoins fondamentaux d&rsquo;une application full-stack. Vos utilisateurs peuvent vouloir t\u00e9l\u00e9verser des images, des CV ou d&rsquo;autres fichiers vers un serveur. En m\u00eame temps, votre application peut avoir besoin de lire des fichiers de configuration, de d\u00e9placer des fichiers, ou m\u00eame de changer leurs permissions de mani\u00e8re programmatique.<\/p>\n<p>Le module de syst\u00e8me de fichiers de Node.js a tout pr\u00e9vu. Il fournit plusieurs API pour interagir avec les syst\u00e8mes de fichiers de mani\u00e8re transparente. La plupart des API sont personnalisables avec des options et des drapeaux. Vous pouvez \u00e9galement les utiliser pour effectuer des op\u00e9rations de fichiers synchrones et asynchrones.<\/p>\n<p>Avant de nous plonger dans le module de syst\u00e8me de fichiers, jetons un coup d&rsquo;\u0153il \u00e0 ce qu&rsquo;est le module Node.js.<\/p>\n<h3>Modules Node.js<\/h3>\n<p>Les modules Node.js sont un ensemble de fonctionnalit\u00e9s disponibles sous forme d&rsquo;API qu&rsquo;un programme consommateur peut utiliser. Par exemple, vous avez le module <code>fs<\/code> pour interagir avec le syst\u00e8me de fichiers. De m\u00eame, un module <code>http<\/code> utilise ses fonctions pour cr\u00e9er un serveur et bien d&rsquo;autres op\u00e9rations. Node.js offre de nombreux modules pour abstraire de nombreuses fonctionnalit\u00e9s de bas niveau pour vous.<\/p>\n<p>Vous pouvez \u00e9galement cr\u00e9er vos propres modules. \u00c0 partir de la version 14 de Node.js, vous pouvez cr\u00e9er et utiliser des modules Node.js de deux mani\u00e8res : Les modules CommonJS (CJS) et ESM (MJS). Tous les exemples que nous verrons dans cet article sont dans le style CJS.<\/p>\n<h2>Travailler avec des fichiers dans Node.js<\/h2>\n<p>Travailler avec des fichiers implique diverses op\u00e9rations avec des fichiers et des r\u00e9pertoires (dossiers). Nous allons maintenant apprendre chacune de ces op\u00e9rations \u00e0 l&rsquo;aide d&rsquo;un exemple de code source. Veuillez ouvrir votre <a href=\"https:\/\/kinsta.com\/fr\/blog\/outils-revue-code\/\">\u00e9diteur de code source<\/a> pr\u00e9f\u00e9r\u00e9 et essayez-les au fur et \u00e0 mesure de votre lecture.<\/p>\n<p>Tout d&rsquo;abord, importez le module <code>fs<\/code> dans votre fichier source pour commencer \u00e0 travailler avec les m\u00e9thodes du syst\u00e8me de fichiers. Dans le style CJS, nous utilisons la m\u00e9thode <code>require<\/code> pour importer une m\u00e9thode d&rsquo;un module. Ainsi, pour importer et utiliser les m\u00e9thodes du module fs, vous devez proc\u00e9der comme ceci :<\/p>\n<pre><code class=\"language-js\">const { writeFile } = require('fs\/promises');<\/code><\/pre>\n<p>Notez \u00e9galement que nous importons la m\u00e9thode <code>writeFile<\/code> du module <code>fs\/promises<\/code>. Nous voulons utiliser les m\u00e9thodes promises car elles sont les plus r\u00e9centes, et elles sont faciles \u00e0 utiliser avec les mots-cl\u00e9s async\/await et moins de code. Les autres alternatives sont les m\u00e9thodes synchrones et les fonctions de rappel que nous verrons plus tard.<\/p>\n<h3>Comment cr\u00e9er et \u00e9crire dans un fichier<\/h3>\n<p>Vous pouvez cr\u00e9er et \u00e9crire dans un fichier de trois fa\u00e7ons :<\/p>\n<ol>\n<li>Utilisation de la m\u00e9thode <code>writeFile<\/code><\/li>\n<li>Utilisation de la m\u00e9thode <code>appendFile<\/code><\/li>\n<li>Utilisation de la m\u00e9thode <code>openFile<\/code><\/li>\n<\/ol>\n<p>Ces m\u00e9thodes acceptent un chemin de fichier et les donn\u00e9es comme contenu \u00e0 \u00e9crire dans le fichier. Si le fichier existe, elles remplacent le contenu dans le fichier. Sinon, elles cr\u00e9ent un nouveau fichier avec le contenu.<\/p>\n<h4>1. Utilisation de la m\u00e9thode writeFile<\/h4>\n<p>L&rsquo;extrait de code ci-dessous montre l&rsquo;utilisation de la m\u00e9thode <code>writeFile<\/code>. Commencez par cr\u00e9er un fichier appel\u00e9 <strong>createFile.js<\/strong> \u00e0 l&rsquo;aide de l&rsquo;extrait de code ci-dessous :<\/p>\n<pre><code class=\"language-js\">const { writeFile } = require('fs\/promises');\nasync function writeToFile(fileName, data) {\n  try {\n    await writeFile(fileName, data);\n    console.log(`Wrote data to ${fileName}`);\n  } catch (error) {\n    console.error(`Got an error trying to write the file: ${error.message}`);\n  }\n}<\/code><\/pre>\n<p>Notez que nous utilisons le mot-cl\u00e9 <code>await<\/code> pour invoquer la m\u00e9thode car elle renvoie une promesse JavaScript. Une promesse r\u00e9ussie cr\u00e9era\/\u00e9crira dans le fichier. Nous avons un bloc try-catch pour g\u00e9rer les erreurs en cas de rejet de la promesse.<\/p>\n<p>Nous pouvons maintenant invoquer la fonction <code>writeToFile<\/code>:<\/p>\n<pre><code class=\"language-js\">writeToFile('friends.txt', 'Bob');<\/code><\/pre>\n<p>Ensuite, ouvrez une invite de commande ou un terminal et ex\u00e9cutez le programme ci-dessus en utilisant la commande suivante :<\/p>\n<pre><code class=\"language-bash\">node createFile.js<\/code><\/pre>\n<p>Cela cr\u00e9era un nouveau fichier appel\u00e9 <strong>friends.txt<\/strong> avec une ligne qui dit simplement :<\/p>\n<pre><code class=\"language-html\">Bob<\/code><\/pre>\n<h4>2. Utilisation de la m\u00e9thode appendFile<\/h4>\n<p>Comme son nom l&rsquo;indique, l&rsquo;utilisation principale de cette m\u00e9thode est d&rsquo;ajouter et de modifier un fichier. Toutefois, vous pouvez \u00e9galement utiliser la m\u00eame m\u00e9thode pour cr\u00e9er un fichier.<\/p>\n<p>Jetez un coup d&rsquo;\u0153il \u00e0 la fonction ci-dessous. Nous utilisons la m\u00e9thode <code>appendFile<\/code> avec l&rsquo;indicateur <code>w<\/code> pour \u00e9crire un fichier. L&rsquo;indicateur par d\u00e9faut pour l&rsquo;ajout \u00e0 un fichier est <code>a<\/code>:<\/p>\n<pre><code class=\"language-js\">const { appendFile} = require('fs\/promises');\n\nasync function appendToFile(fileName, data) {\n  try {\n    await appendFile(fileName, data, { flag: 'w' });\n    console.log(`Appended data to ${fileName}`);\n  } catch (error) {\n    console.error(`Got an error trying to append the file: {error.message}`);\n  }\n}<\/code><\/pre>\n<p>Maintenant, vous pouvez invoquer la fonction ci-dessus comme ceci :<\/p>\n<pre><code class=\"language-js\">appendToFile('activities.txt', 'Skiing');<\/code><\/pre>\n<p>Ensuite, vous pouvez ex\u00e9cuter le code dans l&rsquo;environnement Node.js en utilisant la commande node, comme nous l&rsquo;avons vu pr\u00e9c\u00e9demment. Cela cr\u00e9era un fichier appel\u00e9 <strong>activities.txt<\/strong> avec le contenu <code>Skiing<\/code> dedans.<\/p>\n<h4>3. Utilisation de la m\u00e9thode open<\/h4>\n<p>La derni\u00e8re m\u00e9thode que nous allons apprendre pour cr\u00e9er et \u00e9crire dans un fichier est la m\u00e9thode <code>open<\/code>. Vous pouvez ouvrir un fichier en utilisant l&rsquo;indicateur <code>w<\/code> (pour \u00ab write \u00bb) :<\/p>\n<pre><code class=\"language-js\">const { open} = require('fs\/promises');\n\nasync function openFile(fileName, data) {\n  try {\n    const file = await open(fileName, 'w');\n    await file.write(data);\n    console.log(`Opened file ${fileName}`);\n  } catch (error) {\n    console.error(`Got an error trying to open the file: {error.message}`);\n  }\n}<\/code><\/pre>\n<p>Appelez maintenant la fonction <code>openFile<\/code> avec :<\/p>\n<pre><code class=\"language-js\">openFile('tasks.txt', 'Do homework');<\/code><\/pre>\n<p>Lorsque vous ex\u00e9cutez le script \u00e0 l&rsquo;aide de la commande node, vous aurez un fichier nomm\u00e9 <strong>tasks.txt<\/strong> cr\u00e9\u00e9 avec le contenu initial :<\/p>\n<pre><code class=\"language-html\">Do homework<\/code><\/pre>\n<h3>Comment lire un fichier<\/h3>\n<p>Maintenant que nous savons comment cr\u00e9er et \u00e9crire dans un fichier, apprenons \u00e0 lire le contenu d&rsquo;un fichier. Pour ce faire, nous utiliserons la m\u00e9thode <code>readFile<\/code> du module de syst\u00e8me de fichiers.<\/p>\n<p>Cr\u00e9ez un fichier appel\u00e9 <strong>readThisFile.js<\/strong> avec le code suivant :<\/p>\n<pre><code class=\"language-js\">\/\/ readThisFile.js\nconst { readFile } = require('fs\/promises');\nasync function readThisFile(filePath) {\n  try {\n    const data = await readFile(filePath);\n    console.log(data.toString());\n  } catch (error) {\n    console.error(`Got an error trying to read the file: {error.message}`);\n }\n}<\/code><\/pre>\n<p>Lisons maintenant les trois fichiers que nous avons cr\u00e9\u00e9s en invoquant la fonction <code>readThisFile<\/code>:<\/p>\n<pre><code class=\"language-js\">readThisFile('activities.txt');\nreadThisFile('friends.txt');\nreadThisFile('tasks.txt');<\/code><\/pre>\n<p>Enfin, ex\u00e9cutez le script \u00e0 l&rsquo;aide de la commande node suivante :<\/p>\n<pre><code class=\"language-bash\">node readThisFile.js<\/code><\/pre>\n<p>Vous devriez voir la sortie suivante dans la console :<\/p>\n<pre><code class=\"language-html\">Skiing\nDo homework\nBob<\/code><\/pre>\n<p>Un point \u00e0 noter ici : La m\u00e9thode <code>readFile<\/code> lit le fichier de mani\u00e8re asynchrone. Cela signifie que l&rsquo;ordre dans lequel vous lisez le fichier et l&rsquo;ordre dans lequel vous obtenez une r\u00e9ponse \u00e0 afficher dans la console peuvent ne pas \u00eatre les m\u00eames. Vous devez utiliser la version synchrone de la m\u00e9thode <code>readFile<\/code> pour obtenir l&rsquo;ordre. Nous verrons cela ici dans un petit moment.<\/p>\n<h3>Comment renommer un fichier<\/h3>\n<p>Pour renommer un fichier, utilisez la m\u00e9thode rename du module fs. Cr\u00e9ons un fichier appel\u00e9 <strong>rename-me.txt<\/strong>. Nous renommerons ce fichier de mani\u00e8re programmatique.<\/p>\n<p>Cr\u00e9ez un fichier appel\u00e9 <strong>renameFile.js<\/strong> avec le code suivant :<\/p>\n<pre><code class=\"language-js\">const { rename } = require('fs\/promises');\n\nasync function renameFile(from, to) {\n  try {\n    await rename(from, to);\n    console.log(`Renamed ${from} to ${to}`);\n  } catch (error) {\n    console.error(`Got an error trying to rename the file: ${error.message}`);\n  }\n}<\/code><\/pre>\n<p>Comme vous l&rsquo;avez peut-\u00eatre remarqu\u00e9, la m\u00e9thode rename prend deux arguments. L&rsquo;un est le fichier avec le nom source, et l&rsquo;autre est le nom cible.<\/p>\n<p>Invoquons maintenant la fonction ci-dessus pour renommer le fichier :<\/p>\n<pre><code class=\"language-js\">const oldName = \"rename-me.txt\";\nconst newName = \"renamed.txt\";\nrenameFile(oldName, newName);<\/code><\/pre>\n<p>Comme pr\u00e9c\u00e9demment, ex\u00e9cutez le fichier script en utilisant la commande node pour renommer le fichier :<\/p>\n<pre><code class=\"language-bash\">node renameFile.js<\/code><\/pre>\n<h3>Comment d\u00e9placer un fichier<\/h3>\n<p>D\u00e9placer un fichier d&rsquo;un r\u00e9pertoire \u00e0 un autre est similaire au fait de renommer son chemin. Nous pouvons donc utiliser la m\u00e9thode <code>rename<\/code> elle-m\u00eame pour d\u00e9placer des fichiers.<\/p>\n<p>Cr\u00e9ons deux dossiers, <strong>from<\/strong> et <strong>to<\/strong>. Puis nous cr\u00e9erons un fichier appel\u00e9 <strong>move-me.txt <\/strong>\u00e0 l&rsquo;int\u00e9rieur du dossier <strong>from<\/strong>.<\/p>\n<p>Ensuite, nous allons \u00e9crire le code pour d\u00e9placer le fichier <strong>move-me.txt<\/strong>. Cr\u00e9ez un fichier appel\u00e9 <strong>moveFile.js<\/strong> avec l&rsquo;extrait de code suivant :<\/p>\n<pre><code class=\"language-js\">const { rename } = require('fs\/promises');\nconst { join } = require('path');\nasync function moveFile(from, to) {\n  try {\n    await rename(from, to);\n    console.log(`Moved ${from} to ${to}`);\n  } catch (error) {\n    console.error(`Got an error trying to move the file: ${error.message}`);\n  }\n}<\/code><\/pre>\n<p>Comme vous pouvez le voir, nous utilisons la m\u00e9thode <code>rename<\/code> comme auparavant. Mais pourquoi devons-nous importer la m\u00e9thode <code>join<\/code> du module <code>path<\/code> (oui, le chemin est un autre module crucial de Node.js) ?<\/p>\n<p>La m\u00e9thode <code>join<\/code> est utilis\u00e9e pour joindre plusieurs segments de chemin sp\u00e9cifi\u00e9s pour former un chemin. Nous allons l&rsquo;utiliser pour former le chemin des noms de fichiers source et destination :<\/p>\n<pre><code class=\"language-js\">const fromPath = join(__dirname, \"from\", \"move-me.txt\");\nconst destPath = join(__dirname, \"to\", \"move-me.txt\");\nmoveFile(fromPath, destPath);<\/code><\/pre>\n<p>Et c&rsquo;est tout ! Si vous ex\u00e9cutez le script <strong>moveFile.js<\/strong>, vous verrez le fichier <strong>move-me.txt<\/strong> d\u00e9plac\u00e9 vers le dossier <strong>to<\/strong>.<\/p>\n<h3>Comment copier un fichier<\/h3>\n<p>Nous utilisons la m\u00e9thode <code>copyFile<\/code> du module <code>fs<\/code> pour copier un fichier de la source vers la destination.<\/p>\n<p>Jetez un coup d&rsquo;\u0153il \u00e0 l&rsquo;extrait de code ci-dessous :<\/p>\n<pre><code class=\"language-js\">const { copyFile } = require('fs\/promises');\nconst { join } = require('path');\nasync function copyAFile(from, to) {\n  try {\n    await copyFile(from, to);\n    console.log(`Copied ${from} to ${to}`);\n  } catch (err) {\n    console.error(`Got an error trying to copy the file: ${err.message}`);\n  }\n}<\/code><\/pre>\n<p>Vous pouvez maintenant invoquer la fonction ci-dessus avec :<\/p>\n<pre><code class=\"language-js\">copyAFile('friends.txt', 'friends-copy.txt');<\/code><\/pre>\n<p>Elle copiera le contenu du fichier <strong>friends.txt<\/strong> dans le fichier <strong>friends-copy.txt<\/strong>.<\/p>\n<p>Maintenant, c&rsquo;est g\u00e9nial, mais comment copier plusieurs fichiers ?<\/p>\n<p>Vous pouvez utiliser l&rsquo;API <code>Promise.all<\/code> pour ex\u00e9cuter plusieurs promesses en parall\u00e8le :<\/p>\n<pre><code class=\"language-js\">async function copyAll(fromDir, toDir, filePaths) {\n  return Promise.all(filePaths.map(filePath =&gt; {\n   return copyAFile(join(fromDir, filePath), join(toDir, filePath));\n  }));\n}<\/code><\/pre>\n<p>Vous pouvez maintenant fournir tous les chemins de fichiers \u00e0 copier d&rsquo;un r\u00e9pertoire \u00e0 un autre :<\/p>\n<pre><code class=\"language-js\">copyFiles('from', 'to', ['copyA.txt', 'copyB.txt']);<\/code><\/pre>\n<p>Vous pouvez \u00e9galement utiliser cette approche pour effectuer d&rsquo;autres op\u00e9rations comme le d\u00e9placement, l&rsquo;\u00e9criture et la lecture de fichiers en parall\u00e8le.<\/p>\n<h3>Comment supprimer un fichier<\/h3>\n<p>Nous utilisons la m\u00e9thode <code>unlink<\/code> pour supprimer un fichier :<\/p>\n<pre><code class=\"language-js\">const { unlink } = require('fs\/promises');\nasync function deleteFile(filePath) {\n  try {\n    await unlink(filePath);\n    console.log(`Deleted ${filePath}`);\n  } catch (error) {\n    console.error(`Got an error trying to delete the file: ${error.message}`);\n  }\n}<\/code><\/pre>\n<p>N&rsquo;oubliez pas que vous devez fournir le chemin d&rsquo;acc\u00e8s au fichier pour le supprimer :<\/p>\n<pre><code class=\"language-js\">deleteFile('delete-me.txt');<\/code><\/pre>\n<p>Notez que si le chemin d&rsquo;acc\u00e8s est un lien symbolique vers un autre fichier, la m\u00e9thode unlink annulera le lien symbolique, mais le fichier original ne sera pas touch\u00e9. Nous parlerons davantage des liens symboliques plus tard.<\/p>\n<h3>Comment modifier les permissions et la propri\u00e9t\u00e9 des fichiers<\/h3>\n<p>Il se peut que vous souhaitiez \u00e0 un moment donn\u00e9 modifier les autorisations de fichiers de mani\u00e8re programmatique. Cela peut s&rsquo;av\u00e9rer tr\u00e8s utile pour rendre un fichier en lecture seule ou enti\u00e8rement accessible.<\/p>\n<p>Nous allons utiliser la m\u00e9thode <code>chmod<\/code> pour modifier l&rsquo;autorisation d&rsquo;un fichier :<\/p>\n<pre><code class=\"language-js\">const { chmod } = require('fs\/promises');\nasync function changePermission(filePath, permission) {\n  try {\n    await chmod(filePath, permission);\n    console.log(`Changed permission to ${permission} for ${filePath}`);\n  } catch (error) {\n    console.error(`Got an error trying to change permission: ${error.message}`);\n  }\n}<\/code><\/pre>\n<p>Nous pouvons passer le chemin du fichier et le bitmask de permission pour changer la permission.<\/p>\n<p>Voici l&rsquo;appel de fonction pour changer la permission d&rsquo;un fichier en lecture seule :<\/p>\n<pre><code class=\"language-js\">changePermission('permission.txt', 0o400);<\/code><\/pre>\n<p>De fa\u00e7on similaire \u00e0 la permission, vous pouvez \u00e9galement changer la propri\u00e9t\u00e9 d&rsquo;un fichier de fa\u00e7on programmatique. Nous utilisons la m\u00e9thode <code>chown<\/code> pour ce faire :<\/p>\n<pre><code class=\"language-js\">const { chown } = require('fs\/promises');\n\nasync function changeOwnership(filePath, userId, groupId) {\n  try {\n    await chown(filePath, userId, groupId);\n    console.log(`Changed ownership to ${userId}:${groupId} for ${filePath}`);\n  } catch (error) {\n    console.error(`Got an error trying to change ownership: ${error.message}`);\n  }\n}<\/code><\/pre>\n<p>Nous appelons ensuite la fonction avec le chemin du fichier, l&rsquo;ID de l&rsquo;utilisateur et l&rsquo;ID du groupe :<\/p>\n<pre><code class=\"language-js\">changeOwnership('ownership.txt', 1000, 1010);<\/code><\/pre>\n<h3>Comment cr\u00e9er un lien symbolique<\/h3>\n<p>Le <a href=\"https:\/\/kinsta.com\/blog\/managing-wordpress-development-with-symlinks\/\" rel=\"noopener\">lien symbolique (\u00e9galement appel\u00e9 symlink)<\/a> est un concept du syst\u00e8me de fichiers permettant de cr\u00e9er un lien vers un fichier ou un dossier. Nous cr\u00e9ons des liens symboliques pour cr\u00e9er des raccourcis vers un fichier\/dossier cible dans le syst\u00e8me de fichiers. Le module Node.js <code>filesystem<\/code> fournit la m\u00e9thode <code>symlink<\/code> pour cr\u00e9er un lien symbolique.<\/p>\n<p>Pour cr\u00e9er le lien symbolique, nous devons passer le chemin du fichier cible, le chemin du fichier r\u00e9el et le type :<\/p>\n<pre><code class=\"language-js\">const { symlink } = require('fs\/promises');\nconst { join } = require('path');\nasync function createSymlink(target, path, type) {\n  try {\n    await symlink(target, path, type);\n    console.log(`Created symlink to ${target} at ${path}`);\n  } catch (error) {\n    console.error(`Got an error trying to create the symlink: ${error.message}`);\n  }\n}<\/code><\/pre>\n<p>Nous pouvons invoquer la fonction avec :<\/p>\n<pre><code class=\"language-js\">createSymlink('join(__dirname, from, symMe.txt)', 'symToFile', 'file');<\/code><\/pre>\n<p>Ici, nous avons cr\u00e9\u00e9 un lien symbolique appel\u00e9 <code>symToFile<\/code>.<\/p>\n<h3>Comment observer les modifications d&rsquo;un fichier<\/h3>\n<p>Saviez-vous que vous pouvez observer les modifications apport\u00e9es \u00e0 un fichier ? C&rsquo;est un excellent moyen de surveiller les alt\u00e9rations et les \u00e9v\u00e9nements, surtout lorsque vous ne vous y attendez pas. Vous pouvez les capturer et les auditer pour les examiner ult\u00e9rieurement.<\/p>\n<p>La m\u00e9thode <code>watch<\/code> est la meilleure fa\u00e7on de surveiller les modifications de fichiers. Il existe une autre m\u00e9thode appel\u00e9e <code>watchFile<\/code>, mais elle n&rsquo;est pas aussi performante que la m\u00e9thode <code>watch<\/code>.<\/p>\n<p>Jusqu&rsquo;\u00e0 pr\u00e9sent, nous avons utilis\u00e9 la m\u00e9thode du module de syst\u00e8me de fichiers avec les mots-cl\u00e9s async\/await. Voyons les utilisations de la fonction callback avec cet exemple.<\/p>\n<p>La m\u00e9thode <code>watch<\/code> accepte le chemin du fichier et une fonction de rappel comme arguments. Chaque fois qu&rsquo;une activit\u00e9 a lieu sur le fichier, la fonction <code>callback<\/code> est appel\u00e9e.<\/p>\n<p>Nous pouvons tirer parti du param\u00e8tre <code>event<\/code> pour obtenir plus d&rsquo;informations sur les activit\u00e9s :<\/p>\n<pre><code class=\"language-js\">const fs = require('fs');\nfunction watchAFile(file) {\n  fs.watch(file, (event, filename) =&gt; {\n    console.log(`${filename} file Changed`);\n  });\n}<\/code><\/pre>\n<p>Appelez la fonction en passant un nom de fichier \u00e0 <code>watch<\/code>:<\/p>\n<pre><code class=\"language-js\">watchAFile('friends.txt');<\/code><\/pre>\n<p>Maintenant, nous capturons automatiquement toute activit\u00e9 sur le fichier <strong>friends.txt<\/strong>.<\/p>\n<h2>Travailler avec des r\u00e9pertoires (dossiers) dans Node.js<\/h2>\n<p>Passons maintenant \u00e0 l&rsquo;apprentissage de la mani\u00e8re d&rsquo;effectuer des op\u00e9rations sur des r\u00e9pertoires ou des dossiers. La plupart des op\u00e9rations telles que renommer, d\u00e9placer et copier sont similaires \u00e0 ce que nous avons vu pour les fichiers. Cependant, certaines m\u00e9thodes et op\u00e9rations sp\u00e9cifiques ne sont utilisables que sur les r\u00e9pertoires.<\/p>\n<h3>Comment cr\u00e9er un r\u00e9pertoire<\/h3>\n<p>Nous utilisons la m\u00e9thode <code>mkdir<\/code> pour cr\u00e9er un r\u00e9pertoire. Vous devez passer le nom du r\u00e9pertoire comme argument :<\/p>\n<pre><code class=\"language-js\">const { mkdir } = require('fs\/promises');\nasync function createDirectory(path) {\n  try {\n    await mkdir(path);\n    console.log(`Created directory ${path}`);\n  } catch (error) {\n    console.error(`Got an error trying to create the directory: ${error.message}`);\n  }\n}<\/code><\/pre>\n<p>Maintenant, nous pouvons invoquer la fonction <code>createDirectory<\/code> avec un chemin de r\u00e9pertoire :<\/p>\n<pre><code class=\"language-js\">createDirectory('new-directory');<\/code><\/pre>\n<p>Cela cr\u00e9era un r\u00e9pertoire nomm\u00e9 <strong>new-directory<\/strong>.<\/p>\n<h3>Comment cr\u00e9er un r\u00e9pertoire temporaire<\/h3>\n<p>Les r\u00e9pertoires temporaires ne sont pas des r\u00e9pertoires ordinaires. Ils ont une signification particuli\u00e8re pour le syst\u00e8me d&rsquo;exploitation. Vous pouvez cr\u00e9er un r\u00e9pertoire temporaire \u00e0 l&rsquo;aide de la m\u00e9thode <code>mkdtemp()<\/code>.<\/p>\n<p>Cr\u00e9ons un dossier temporaire dans le r\u00e9pertoire temporaire de votre syst\u00e8me d&rsquo;exploitation. Nous obtenons les informations relatives \u00e0 l&#8217;emplacement du r\u00e9pertoire temporaire \u00e0 partir de la m\u00e9thode <code>tmpdir()<\/code> du module <code>os<\/code>:<\/p>\n<pre><code class=\"language-js\">const { mkdtemp } = require('fs\/promises');\nconst { join } = require('path');\nconst { tmpdir } = require('os');\nasync function createTemporaryDirectory(fileName) {\n  try {\n    const tempDirectory = await mkdtemp(join(tmpdir(), fileName));\n    console.log(`Created temporary directory ${tempDirectory}`);\n  } catch (error) {\n    console.error(`Got an error trying to create the temporary directory: ${error.message}`);\n  }\n}<\/code><\/pre>\n<p>Maintenant, appelons la fonction avec le nom du r\u00e9pertoire pour le cr\u00e9er :<\/p>\n<pre><code class=\"language-js\">createTemporaryDirectory('node-temp-file-');<\/code><\/pre>\n<p>Notez que Node.js ajoutera six caract\u00e8res al\u00e9atoires \u00e0 la fin du nom du r\u00e9pertoire temporaire cr\u00e9\u00e9 pour le garder unique.<\/p>\n<h3>Comment supprimer un r\u00e9pertoire<\/h3>\n<p>Vous devez utiliser la m\u00e9thode <code>rmdir()<\/code> pour supprimer\/effacer un r\u00e9pertoire :<\/p>\n<pre><code class=\"language-js\">const { rmdir } = require('fs\/promises');\nasync function deleteDirectory(path) {\n  try {\n    await rmdir(path);\n    console.log(`Deleted directory ${path}`);\n  } catch (error) {\n    console.error(`Got an error trying to delete the directory: ${error.message}`);\n  }\n}<\/code><\/pre>\n<p>Ensuite, appelez la fonction ci-dessus en passant le chemin du dossier que vous voulez supprimer :<\/p>\n<pre><code class=\"language-js\">deleteDirectory('new-directory-renamed');<\/code><\/pre>\n<h2>API synchrones vs asynchrones<\/h2>\n<p>Jusqu&rsquo;\u00e0 pr\u00e9sent, nous avons vu de nombreux exemples de m\u00e9thodes de syst\u00e8me de fichiers, et tous sont avec des utilisations asynchrones. Cependant, vous pouvez avoir besoin de traiter certaines op\u00e9rations de mani\u00e8re synchrone.<\/p>\n<p>Un exemple d&rsquo;op\u00e9ration synchrone est la lecture de plusieurs fichiers l&rsquo;un apr\u00e8s l&rsquo;autre. Le module <code>fs<\/code> poss\u00e8de une m\u00e9thode appel\u00e9e <code>readFileSync()<\/code> pour y parvenir :<\/p>\n<pre><code class=\"language-js\">const { readFileSync } = require('fs');\nfunction readFileSynchronously(path) {\n  try {\n    const data = readFileSync(path);\n    console.log(data.toString());\n  } catch (error) {\n    console.error(error);\n  }\n}<\/code><\/pre>\n<p>Notez que la m\u00e9thode <code>readFileSync()<\/code> n&rsquo;est pas requise du paquet \u00ab fs\/promesses \u00bb. Ceci est d\u00fb au fait que la m\u00e9thode n&rsquo;est pas asynchrone. Ainsi, vous pouvez appeler la fonction ci-dessus avec :<\/p>\n<pre><code class=\"language-js\">readFileSynchronously('activities.txt');\nreadFileSynchronously('friends.txt');\nreadFileSynchronously('tasks.txt');<\/code><\/pre>\n<p>Dans ce cas, tous les fichiers ci-dessus seront lus dans l&rsquo;ordre o\u00f9 les fonctions ont \u00e9t\u00e9 appel\u00e9es.<\/p>\n<p>Le module de syst\u00e8me de fichiers Node.js offre une m\u00e9thode synchrone pour d&rsquo;autres op\u00e9rations comme l&rsquo;op\u00e9ration de lecture. Utilisez-les \u00e0 bon escient et uniquement en cas de besoin. Les m\u00e9thodes asynchrones sont bien plus utiles pour l&rsquo;ex\u00e9cution parall\u00e8le.<\/p>\n<h2>Gestion des erreurs<\/h2>\n<p>Comme tout codeur le sait, vous devez <a href=\"https:\/\/kinsta.com\/fr\/blog\/erreurs-dans-javascript\/\" target=\"_blank\" rel=\"noopener noreferrer\">vous attendre \u00e0 des erreurs et \u00eatre pr\u00eat \u00e0 les g\u00e9rer<\/a> lorsque vous effectuez une op\u00e9ration sur un fichier ou un r\u00e9pertoire. Que se passe-t-il si le fichier n&rsquo;est pas trouv\u00e9, ou si vous n&rsquo;avez pas la permission d&rsquo;\u00e9crire dans un fichier ? Il peut y avoir (et il y aura probablement) de nombreux cas o\u00f9 vous pourriez rencontrer une erreur.<\/p>\n<p>Vous devriez toujours entourer vos appels de m\u00e9thode d&rsquo;un bloc try-catch. De cette fa\u00e7on, si une erreur se produit, le contr\u00f4le passera au bloc catch, o\u00f9 vous pourrez examiner et traiter l&rsquo;erreur. Comme vous l&rsquo;avez peut-\u00eatre remarqu\u00e9 dans tous les exemples ci-dessus, nous avons utilis\u00e9 le bloc try-catch pour traiter les erreurs que nous avons rencontr\u00e9es.<\/p>\n\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>Passons en revue les points cl\u00e9s que nous avons abord\u00e9s dans ce tutoriel :<\/p>\n<ul>\n<li>Le module de syst\u00e8me de fichiers (fs) de Node.js dispose de nombreuses m\u00e9thodes pour vous aider dans de nombreuses t\u00e2ches de bas niveau.<\/li>\n<li>Vous pouvez effectuer diverses op\u00e9rations sur les fichiers comme cr\u00e9er, \u00e9crire, renommer, copier, d\u00e9placer, supprimer, et bien d&rsquo;autres encore.<\/li>\n<li>Vous pouvez effectuer plusieurs op\u00e9rations sur les r\u00e9pertoires comme la cr\u00e9ation, le r\u00e9pertoire temporaire, le d\u00e9placement, et bien d&rsquo;autres encore.<\/li>\n<li>Toutes les m\u00e9thodes peuvent \u00eatre invoqu\u00e9es de mani\u00e8re asynchrone en utilisant des promesses JavaScript ou des fonctions de rappel.<\/li>\n<li>Vous pouvez \u00e9galement invoquer les m\u00e9thodes de mani\u00e8re synchrone si n\u00e9cessaire.<\/li>\n<li>Pr\u00e9f\u00e9rez toujours les m\u00e9thodes asynchrones aux m\u00e9thodes synchrones.<\/li>\n<li>G\u00e9rez les erreurs avec un bloc try-catch \u00e0 chaque fois que vous interagissez avec les m\u00e9thodes.<\/li>\n<\/ul>\n<p>Maintenant que nous avons travaill\u00e9 un peu avec le syst\u00e8me de fichiers Node.js, vous devriez avoir une bonne ma\u00eetrise de ses tenants et aboutissants. Si vous voulez renforcer votre savoir-faire, vous pouvez vous pencher sur les <a href=\"https:\/\/nodejs.org\/api\/stream.html\" target=\"_blank\" rel=\"noopener noreferrer\">flux Node.js<\/a> comme une progression naturelle de l&rsquo;apprentissage des modules Node.js. Les flux sont des moyens efficaces de g\u00e9rer l&rsquo;\u00e9change d&rsquo;informations, y compris les appels r\u00e9seau, la lecture\/\u00e9criture de fichiers, et bien plus encore.<\/p>\n<p>Vous pouvez trouver tout le code source utilis\u00e9 dans cet article dans <a href=\"https:\/\/github.com\/atapas\/nodeX\/tree\/main\/fs-module\" target=\"_blank\" rel=\"noopener noreferrer\">ce d\u00e9p\u00f4t GitHub<\/a>.<\/p>\n<p>Vous pr\u00e9voyez d&rsquo;utiliser Node.js pour votre prochain projet ? Faites-nous savoir pourquoi vous l&rsquo;avez choisi dans la section des commentaires ci-dessous.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>JavaScript est depuis longtemps l&rsquo;un des langages de script les plus populaires, mais pendant une longue p\u00e9riode, il n&rsquo;\u00e9tait pas un excellent choix pour le d\u00e9veloppement &#8230;<\/p>\n","protected":false},"author":242,"featured_media":59507,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[535,468,518,774],"topic":[979,994],"class_list":["post-59501","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-javascript","tag-javascript-frameworks","tag-node-js","tag-npm","topic-frameworks-javascript","topic-node-js"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Comprendre le module de syst\u00e8me de fichiers (FS) de Node.js<\/title>\n<meta name=\"description\" content=\"Vous avez des difficult\u00e9s \u00e0 naviguer dans le module de syst\u00e8me de fichiers de Node.js ? Apprenez depuis ces exemples comment les API du module vous aident \u00e0 utiliser les fichiers et les r\u00e9pertoires.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Comprendre le module de syst\u00e8me de fichiers (FS) de Node.js\" \/>\n<meta property=\"og:description\" content=\"Vous avez des difficult\u00e9s \u00e0 naviguer dans le module de syst\u00e8me de fichiers de Node.js ? Apprenez depuis ces exemples comment les API du module vous aident \u00e0 utiliser les fichiers et les r\u00e9pertoires.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-07-12T07:20:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-01T19:45:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/07\/nodejs-fs.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Tapas Adhikary\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Vous avez des difficult\u00e9s \u00e0 naviguer dans le module de syst\u00e8me de fichiers de Node.js ? Apprenez depuis ces exemples comment les API du module vous aident \u00e0 utiliser les fichiers et les r\u00e9pertoires.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/07\/nodejs-fs.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tapas Adhikary\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/\"},\"author\":{\"name\":\"Tapas Adhikary\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/cbf8d294c77f2e4e63a847227b8b676f\"},\"headline\":\"Comprendre le module de syst\u00e8me de fichiers (FS) de Node.js\",\"datePublished\":\"2022-07-12T07:20:15+00:00\",\"dateModified\":\"2025-10-01T19:45:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/\"},\"wordCount\":3131,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/07\/nodejs-fs.jpeg\",\"keywords\":[\"JavaScript\",\"JavaScript Frameworks\",\"node.js\",\"npm\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/\",\"name\":\"Comprendre le module de syst\u00e8me de fichiers (FS) de Node.js\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/07\/nodejs-fs.jpeg\",\"datePublished\":\"2022-07-12T07:20:15+00:00\",\"dateModified\":\"2025-10-01T19:45:51+00:00\",\"description\":\"Vous avez des difficult\u00e9s \u00e0 naviguer dans le module de syst\u00e8me de fichiers de Node.js ? Apprenez depuis ces exemples comment les API du module vous aident \u00e0 utiliser les fichiers et les r\u00e9pertoires.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/07\/nodejs-fs.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/07\/nodejs-fs.jpeg\",\"width\":1460,\"height\":730,\"caption\":\"Comprendre le module de syst\u00e8me de fichiers (FS) de Node.js\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Node.js\",\"item\":\"https:\/\/kinsta.com\/fr\/sujets\/node-js\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Comprendre le module de syst\u00e8me de fichiers (FS) de Node.js\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/fr\/#website\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/cbf8d294c77f2e4e63a847227b8b676f\",\"name\":\"Tapas Adhikary\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9665271e577fe06eec74cdff7372f6d3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9665271e577fe06eec74cdff7372f6d3?s=96&d=mm&r=g\",\"caption\":\"Tapas Adhikary\"},\"description\":\"Tapas Adhikary is a technology blogger, YouTuber, and mentor. He has published over 250 articles sharing his decade's worth of knowledge and experience. He's a passionate contributor to and maintainer of open-source projects.\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/author\/tapasadhikary\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Comprendre le module de syst\u00e8me de fichiers (FS) de Node.js","description":"Vous avez des difficult\u00e9s \u00e0 naviguer dans le module de syst\u00e8me de fichiers de Node.js ? Apprenez depuis ces exemples comment les API du module vous aident \u00e0 utiliser les fichiers et les r\u00e9pertoires.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/","og_locale":"fr_FR","og_type":"article","og_title":"Comprendre le module de syst\u00e8me de fichiers (FS) de Node.js","og_description":"Vous avez des difficult\u00e9s \u00e0 naviguer dans le module de syst\u00e8me de fichiers de Node.js ? Apprenez depuis ces exemples comment les API du module vous aident \u00e0 utiliser les fichiers et les r\u00e9pertoires.","og_url":"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2022-07-12T07:20:15+00:00","article_modified_time":"2025-10-01T19:45:51+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/07\/nodejs-fs.jpeg","type":"image\/jpeg"}],"author":"Tapas Adhikary","twitter_card":"summary_large_image","twitter_description":"Vous avez des difficult\u00e9s \u00e0 naviguer dans le module de syst\u00e8me de fichiers de Node.js ? Apprenez depuis ces exemples comment les API du module vous aident \u00e0 utiliser les fichiers et les r\u00e9pertoires.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/07\/nodejs-fs.jpeg","twitter_creator":"@kinsta_fr","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Tapas Adhikary","Dur\u00e9e de lecture estim\u00e9e":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/"},"author":{"name":"Tapas Adhikary","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/cbf8d294c77f2e4e63a847227b8b676f"},"headline":"Comprendre le module de syst\u00e8me de fichiers (FS) de Node.js","datePublished":"2022-07-12T07:20:15+00:00","dateModified":"2025-10-01T19:45:51+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/"},"wordCount":3131,"commentCount":2,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/07\/nodejs-fs.jpeg","keywords":["JavaScript","JavaScript Frameworks","node.js","npm"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/","url":"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/","name":"Comprendre le module de syst\u00e8me de fichiers (FS) de Node.js","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/07\/nodejs-fs.jpeg","datePublished":"2022-07-12T07:20:15+00:00","dateModified":"2025-10-01T19:45:51+00:00","description":"Vous avez des difficult\u00e9s \u00e0 naviguer dans le module de syst\u00e8me de fichiers de Node.js ? Apprenez depuis ces exemples comment les API du module vous aident \u00e0 utiliser les fichiers et les r\u00e9pertoires.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/07\/nodejs-fs.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/07\/nodejs-fs.jpeg","width":1460,"height":730,"caption":"Comprendre le module de syst\u00e8me de fichiers (FS) de Node.js"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/nodejs-fs\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Node.js","item":"https:\/\/kinsta.com\/fr\/sujets\/node-js\/"},{"@type":"ListItem","position":3,"name":"Comprendre le module de syst\u00e8me de fichiers (FS) de Node.js"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/fr\/#website","url":"https:\/\/kinsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/cbf8d294c77f2e4e63a847227b8b676f","name":"Tapas Adhikary","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/9665271e577fe06eec74cdff7372f6d3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9665271e577fe06eec74cdff7372f6d3?s=96&d=mm&r=g","caption":"Tapas Adhikary"},"description":"Tapas Adhikary is a technology blogger, YouTuber, and mentor. He has published over 250 articles sharing his decade's worth of knowledge and experience. He's a passionate contributor to and maintainer of open-source projects.","url":"https:\/\/kinsta.com\/fr\/blog\/author\/tapasadhikary\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/59501","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/users\/242"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=59501"}],"version-history":[{"count":7,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/59501\/revisions"}],"predecessor-version":[{"id":59510,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/59501\/revisions\/59510"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/59501\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/59501\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/59501\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/59501\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/59501\/translations\/de"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/59501\/translations\/es"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/59501\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/59507"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=59501"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=59501"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=59501"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}