Tampon _
Le langage JavaScript lui-même n'a que des types de données chaîne, pas des types de données binaires.
Mais lorsqu'il s'agit de flux comme TCP ou de flux de fichiers, des données binaires doivent être utilisées. Par conséquent, dans Node.js, une classe Buffer est définie, qui est utilisée pour créer une zone tampon spécifiquement pour stocker les données binaires.
Dans Node.js, la classe Buffer est une bibliothèque principale livrée avec le noyau Node. La bibliothèque Buffer apporte un moyen de stocker des données brutes dans Node.js, permettant à Node.js de traiter des données binaires. Chaque fois que vous avez besoin de traiter des données déplacées lors d'opérations d'E/S dans Node.js, il est possible d'utiliser la bibliothèque Buffer. . Les données brutes sont stockées dans des instances de la classe Buffer. Un Buffer est similaire à un tableau d'entiers, mais il correspond à un morceau de mémoire brute en dehors de la mémoire tas V8.
- ascii - Seules les données ASCII 7 bits sont prises en charge. Cet encodage est très rapide si les bits forts sont supprimés.
- utf8 - Caractères Unicode codés sur plusieurs octets. De nombreuses pages Web et autres formats de documents utilisent UTF-8.
- utf16le - Caractère Unicode codé en petit-boutiste sur 2 ou 4 octets. Prend en charge les paires de substitution (U+10000 à U+10FFFF).
- ucs2 - Alias pour utf16le.
- base64 - Codage base64 base64_Baidu Encyclopédie
- latin1 - Un moyen d'encoder un Buffer dans une chaîne codée sur un octet.
- binaire - Alias pour latin1.
- hex - Encode chaque octet en deux caractères hexadécimaux.
[Expérience 1] Exécutez le programme suivant
Capture d'écran des résultats en cours d'exécution
Créer une classe Buffer
Buffer fournit l'API suivante pour créer des classes Buffer :
- Buffer.alloc(size[, fill[, encoding]]) : Renvoie une instance de Buffer de la taille spécifiée. Si fill n'est pas défini, elle sera remplie avec 0 par défaut.
- Buffer.allocUnsafe(size) : renvoie une instance Buffer de la taille spécifiée, mais elle ne sera pas initialisée, elle peut donc contenir des données sensibles
- Buffer.allocUnsafeSlow(taille)
- Buffer.from(array) : Renvoie une nouvelle instance de Buffer initialisée par la valeur du tableau (les éléments du tableau passés ne peuvent être que des nombres, sinon ils seront automatiquement écrasés par 0)
- Buffer.from(arrayBuffer[, byteOffset[, length]]) : renvoie un nouveau Buffer qui partage la même mémoire que l'ArrayBuffer donné.
- Buffer.from(buffer) : copie les données de l'instance Buffer entrante et renvoie une nouvelle instance Buffer
- Buffer.from(string[, encoding]) : Renvoie une nouvelle instance de Buffer initialisée par la valeur de string
[Expérience 2] Exécutez le programme suivant, affichez le contenu de buf1-6 et prenez une capture d'écran des résultats
tampon d'écriture
buf.write(string[, offset[, length]][, encoding])
Les paramètres sont décrits comme suit :
string - La chaîne à écrire dans le tampon.
offset - la valeur d'index où le tampon commence à être écrit, la valeur par défaut est 0.
length - le nombre d'octets écrits, par défaut buffer.length
encoding - l'encodage à utiliser. La valeur par défaut est « utf8 ».
valeur de retour
Renvoie la taille réelle écrite. Si l'espace tampon est insuffisant, seule une partie de la chaîne sera écrite.
[Expérience 3] Exécutez le code suivant :
Capture d'écran des résultats en cours d'exécution :
Lire les données du tampon
grammaire
La syntaxe de lecture des données du tampon de nœud est la suivante :
buf.toString([encodage[, début[, fin]]])
Les paramètres sont décrits comme suit
encoding - l'encodage à utiliser. La valeur par défaut est « utf8 ».
start - spécifie la position de l'index pour commencer la lecture, la valeur par défaut est 0.
end - la position de fin, par défaut à la fin du tampon.
valeur de retour
Décode les données du tampon et renvoie une chaîne en utilisant l'encodage spécifié.
[Expérience 4] Exécutez le code suivant
Capture d'écran des résultats en cours d'exécution :
Convertir le tampon en objet JSON
【Expérience 5】 Exécutez le code
Capture d'écran des résultats en cours d'exécution :
fusion de tampons
grammaire
La syntaxe de la fusion des tampons de nœuds est la suivante :
Buffer.concat(liste[, longueur totale])
Les paramètres sont décrits comme suit
list - une liste de tableaux d'objets Buffer utilisés pour la fusion.
totalLength - spécifie la longueur totale des objets Buffer combinés.
valeur de retour
Renvoie un nouvel objet Buffer avec plusieurs membres fusionnés.
[Expérience 6] Exécutez le programme suivant :
Capture d'écran des résultats en cours d'exécution :
Flux Node.js ( flux)
Lire les données du flux
Créez un fichier input.txt avec le contenu suivant :
Département d'information et d'informatique, Collège Xinhua, Université de Ningxia : majeure en informatique et technologie
[Expérience 7] Exécutez le programme suivant
Capture d'écran des résultats en cours d'exécution :
flux d'écriture
[Expérience 8 ] Créez le fichier main.js, le code est le suivant :
Capture d'écran des résultats en cours d'exécution :
débit de tuyau
Les tuyaux fournissent un mécanisme allant d’un flux de sortie à un flux d’entrée. Habituellement, nous l'utilisons pour obtenir des données d'un flux et transmettre les données à un autre flux.
[Expérience 9] Créez le fichier input.txt avec le contenu suivant :
Département d'information et d'informatique, Collège Xinhua, Université de Ningxia : majeure en informatique et technologie
Exécutez le code suivant :
Capture d'écran des résultats en cours d'exécution :
La fonction de ce programme est :
Il peut traiter les fichiers plus efficacement et simplifier l'opération de copie de fichiers.