T在 Node.js 中使用文件描述符
Avant de pouvoir interagir avec un fichier qui se trouve dans votre système de fichiers, vous devez obtenir un descripteur de fichier.
Un descripteur de fichier est une référence à un fichier ouvert, un numéro (fd) renvoyé par l'ouverture du fichier en utilisant la méthode open()
proposée par le module fs
. Ce numéro (fd
) identifie de façon unique un fichier ouvert dans le système d'exploitation :
JS
Remarquez le r
que nous avons utilisé comme second paramètre de l'appel fs.open()
.
Cet indicateurs signifie que nous ouvrons le fichier en lecture.
Les autres indicateurs que vous utiliserez couramment sont:
r+
ouvre le fichier pour la lecture et l'écriture, si le fichier n'existe pas, il ne sera pas créé.w+
ouvre le fichier pour la lecture et l'écriture, en positionnant le flux au début du fichier. Le fichier est créé s'il n'existe pas.a
ouvre le fichier en écriture, en positionnant le flux à la fin du fichier. Le fichier est créé s'il n'existe pas.a+
ouvre le fichier pour la lecture et l'écriture, en positionnant le flux à la fin du fichier. Le fichier est créé s'il n'existe pas.
Vous pouvez également ouvrir le fichier en utilisant la méthode fs.openSync
, qui renvoie le descripteur de fichier, au lieu de le fournir dans une fonction de rappel :
JS
Une fois que vous avez obtenu le descripteur de fichier, de quelque manière que ce soit, vous pouvez effectuer toutes les opérations qui le nécessitent, comme appeler fs.close()
et de nombreuses autres opérations qui interagissent avec le système de fichiers.
Vous pouvez également ouvrir le fichier en utilisant la méthode fsPromises.open
, basée sur les promesses, proposée par le module fs/promises
.
Le module fs/promises
n'est disponible qu'à partir de Node.js v14. Avant la v14, après la v10, vous pouvez utiliser require('fs').promises
à la place. Avant la v10, après la v8, vous pouvez utiliser util.promisify
pour convertir les méthodes fs
en méthodes basées sur des promesses.
JS
Voici un exemple de util.promisify
:
JS
Pour plus de détails sur le module fs/promises
, veuillez consulter fs/promises API.