Heim Web-Frontend js-Tutorial Detaillierte Interpretation des Dateisystems und der Streams in NodeJs

Detaillierte Interpretation des Dateisystems und der Streams in NodeJs

Jun 09, 2018 pm 04:30 PM
node stream

Dieser Artikel stellt hauptsächlich die detaillierte Erklärung des NodeJs-Dateisystems (fs) und des Streams (Stream) vor. Jetzt teile ich ihn mit Ihnen und gebe ihn als Referenz.

1. Einführung

In diesem Artikel werden einige APIs und Parameterverwendungen des Dateisystems (fs) und des Streams (Stream) von node.js vorgestellt.

2. Verzeichnis

Das Dateisystem führt die folgenden Methoden ein:

1.fs.readFile

2.fs .writeFile

3.fs.open

4.fs.read

5.fs.stat

6.fs.close

7.fs.mkdir

8.fs.rmdir

9.fs.readdir

10.fs.unlink

Vier Arten von Streams Ereignisse für lesbare, beschreibbare, Duplex-, Transformations- und Stream-Objekte.

3. Einführung in die Hauptmethoden des Dateisystems fs

1. Die readFile-Methode liest hauptsächlich den Dateiinhalt und führt sie aus asynchron.

var fs = require('fs')
fs.readFile('a.txt',function(err,data){
  if (err){
    return console.error(err);
  }else{
    console.log("异步读取: " + data.toString());
  }
})
Nach dem Login kopieren

2. fs.writeFile

writeFile schreibt Dateien asynchron, fs.writeFile(file, data[, options], callback)

var fs = require('fs')
console.log("准备写入文件")
fs.writeFile('input.txt',"写入的内容",function(err){
  if (err){
    return console.error(err);
  }else{
    console.log("写入成功");
  }
})
Nach dem Login kopieren

3. fs.open( )

Öffnen Sie die Datei im asynchronen Modus, fs.open(path, flags[, mode], callback)

var fs = require("fs");
// 异步打开文件
console.log("准备打开文件");
fs.open('a.txt', 'r+', function(err, fd) {//r+是以读写模式打开,fd为返回的文件描述符
  if (err) {
    return console.error(err);
  }
 console.log("文件打开成功!");   
});
Nach dem Login kopieren

4, fs.read()

Diese Methode liest Dateien im asynchronen Modus, Format: fs.read(fd, buffer, offset, length, position, callback)

var fs = require("fs");
var buf = new Buffer(1024);

console.log("准备打开文件!");
fs.open('at.txt', 'r+', function(err, fd) {
  if (err) {
    return console.error(err);
  }
  fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
   if (err){
     console.log(err);
   }
   // 仅输出读取的字节
   if(bytes > 0){
     console.log(buf.slice(0, bytes).toString());
   }
  });
});
Nach dem Login kopieren

5, fs.stat()

Diese Methode ruft Dateiinformationen asynchron ab . Das Format ist: fs.stat(path, callback)

fs.stat('fs.js', function (err, stats) {
  console.log(stats.isFile());     //true
})
Nach dem Login kopieren

Es gibt viele Methoden für asynchron zurückgegebene Instanzen der Stats-Klasse, wie zum Beispiel stats.isFile(), um zu bestimmen, ob es sich um eine Datei handelt, stats. isDirectory() ermittelt, ob es sich um ein Verzeichnis handelt. . . . . .

6. fs.close()

fs.close() schließt die Datei asynchron. Das Syntaxformat ist: fs.close(fd, callback). 🎜>

d – der von der Methode fs.open() zurückgegebene Dateideskriptor.

Rückruf – Rückruffunktion, keine Parameter.

7. fs.mkdir()

Diese Methode dient zum Erstellen eines Verzeichnisses. Das Format lautet: fs.mkdir(path[, mode], callback).

Pfad :Pfad.

Modus: Verzeichnisberechtigungen, Standard 0777.

Rückruf: Rückruf, keine Parameter.

var fs = require("fs");
console.log("创建目录/test/");
fs.mkdir("/test/",function(err){
  if (err) {
    return console.error(err);
  }
  console.log("创建/test目录成功。");
});
Nach dem Login kopieren

8. fs.rmdir()

Verzeichnis löschen, Syntaxformat: fs.rmdir(path,callback)

9. fs.readdir()

Diese Methode dient zum Lesen des Verzeichnisses. Das Syntaxformat lautet: fs.readdir (Pfad, Rückruf). Die Rückruffunktion hat zwei Parameter, der erste ist err und der zweite sind die Dateiarray-Dateien im Verzeichnis.

var fs = require("fs");

console.log("查看 /tmp 目录");
fs.readdir("/tmp/",function(err, files){
  if (err) {
    return console.error(err);
  }
  files.forEach( function (file){
    console.log( file );
  });
});
Nach dem Login kopieren

10. fs.unlink()

Diese Methode wird zum Löschen von Dateien verwendet. Das Format ist: fs.unlink(path, callback)

var fs = require("fs");

console.log("准备删除文件!");
fs.unlink('input.txt', function(err) {
  if (err) {
    return console.error(err);
  }
  console.log("文件删除成功!");
});
Nach dem Login kopieren

4. Stream-Einführung in Stream-Typen und Ereignisse

1. Stream: Stream ist eine abstrakte Schnittstelle. Es gibt vier Stream-Typen:

readable: lesbar;
  1. beschreibbar: beschreibbarer Betrieb;
  2. Duplex: lesbarer und beschreibbarer Betrieb; Operation Daten werden geschrieben und das Ergebnis wird gelesen.
  3. Alle Stream-Objekte sind Instanzen von EventEmitter:
  4. Daten: Wird ausgelöst, wenn lesbare Daten vorhanden sind,

Ende: wird ausgelöst, wenn keine Daten lesbar sind,
  1. Fehler: wird ausgelöst, wenn ein Fehler auftritt,
  2. Ende: Vollständiger Abzug.
  3. 2. Daten aus dem Stream lesen
  4. var fs = require("fs");
    var data = '';
    
    // 创建可读流
    var readerStream = fs.createReadStream('input.txt');
    
    // 设置编码为 utf8。
    readerStream.setEncoding('UTF8');
    
    // 处理流事件 --> data, end, and error
    readerStream.on('data', function(chunk) {
      data += chunk;
    });
    
    readerStream.on('end',function(){
      console.log(data);
    });
    
    readerStream.on('error', function(err){
      console.log(err.stack);
    });
    
    console.log("程序执行完毕");
    Nach dem Login kopieren
  5. 3. In den Stream schreiben:

    var fs = require("fs");
    var data = '写入流数据';
    
    // 创建一个可以写入的流,写入到文件 output.txt 中
    var writerStream = fs.createWriteStream('output.txt');
    
    // 使用 utf8 编码写入数据
    writerStream.write(data,'UTF8');
    
    // 标记文件末尾
    writerStream.end();
    
    // 处理流事件 --> data, end, and error
    writerStream.on('finish', function() {
      console.log("写入完成。");
    });
    
    writerStream.on('error', function(err){
      console.log(err.stack);
    });
    
    console.log("程序执行完毕");
    Nach dem Login kopieren

    4. Pipe-Stream (Pipe)
  6. var fs = require("fs");
    
    // 创建一个可读流
    var readerStream = fs.createReadStream('input.txt');
    
    // 创建一个可写流
    var writerStream = fs.createWriteStream('output.txt');
    
    // 管道读写操作
    // 读取 input.txt 文件内容,并将内容写入到 output.txt 文件中
    readerStream.pipe(writerStream);
    console.log("程序执行完毕");
    Nach dem Login kopieren
5. Verketteter Fluss

Verkettung ist ein Mechanismus, der einen Ausgabestream mit einem anderen Stream verbindet und mehrere Stream-Operationsketten erstellt. Verkettete Flüsse werden im Allgemeinen für Pipeline-Operationen verwendet.

Als nächstes verwenden wir Rohre und Ketten zum Komprimieren und Dekomprimieren von Dateien.

//压缩
var fs = require("fs");
var zlib = require('zlib');

// 压缩 input.txt 文件为 input.txt.gz
fs.createReadStream('input.txt')
 .pipe(zlib.createGzip())
 .pipe(fs.createWriteStream('input.txt.gz'));
console.log("文件压缩完成。");

//解压
var fs = require("fs");
var zlib = require('zlib');
// 解压 input.txt.gz 文件为 input.txt
fs.createReadStream('input.txt.gz')
 .pipe(zlib.createGunzip())
 .pipe(fs.createWriteStream('input.txt'));
console.log("文件解压完成。");
Nach dem Login kopieren
Ich habe das Obige für Sie zusammengestellt und hoffe, dass es Ihnen in Zukunft hilfreich sein wird.

Verwandte Artikel:

So implementieren Sie die Panda-TV-Navigation mit jquery+css3

So implementieren Sie zeitgesteuerte Ausblenddialogfelder in jQuery

So implementieren Sie eine DIV-Verzögerung für einige Sekunden, bevor sie in JS/jQuery verschwindet oder angezeigt wird

Verwenden Sie native JS, um eine dreistufige Verknüpfung von zu erreichen Provinzen und Gemeinden

Verwenden Sie Vue-Grundlagen zum Erstellen, Hinzufügen, Löschen, Ändern und Überprüfen

Detaillierte Antworten auf die JS-Operations-Zwischenablage

Vue-Router-Projektpraxis (ausführliches Tutorial)

Das obige ist der detaillierte Inhalt vonDetaillierte Interpretation des Dateisystems und der Streams in NodeJs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So löschen Sie einen Knoten in NVM So löschen Sie einen Knoten in NVM Dec 29, 2022 am 10:07 AM

So löschen Sie einen Knoten mit nvm: 1. Laden Sie „nvm-setup.zip“ herunter und installieren Sie es auf dem Laufwerk C. 2. Konfigurieren Sie Umgebungsvariablen und überprüfen Sie die Versionsnummer mit dem Befehl „nvm -v“. install“-Befehl Knoten installieren; 4. Löschen Sie den installierten Knoten über den Befehl „nvm uninstall“.

So verwenden Sie Express für den Datei-Upload im Knotenprojekt So verwenden Sie Express für den Datei-Upload im Knotenprojekt Mar 28, 2023 pm 07:28 PM

Wie gehe ich mit dem Datei-Upload um? Der folgende Artikel stellt Ihnen vor, wie Sie Express zum Hochladen von Dateien im Knotenprojekt verwenden. Ich hoffe, er ist hilfreich für Sie!

Eine ausführliche Analyse des Prozessmanagement-Tools „pm2' von Node Eine ausführliche Analyse des Prozessmanagement-Tools „pm2' von Node Apr 03, 2023 pm 06:02 PM

In diesem Artikel stellen wir Ihnen das Prozessmanagement-Tool „pm2“ von Node vor und sprechen darüber, warum PM2 benötigt wird und wie Sie PM2 installieren und verwenden. Ich hoffe, dass es für alle hilfreich ist!

PI -Knotenunterricht: Was ist ein PI -Knoten? Wie installiere und richte ich einen PI -Knoten ein? PI -Knotenunterricht: Was ist ein PI -Knoten? Wie installiere und richte ich einen PI -Knoten ein? Mar 05, 2025 pm 05:57 PM

Detaillierte Erläuterungs- und Installationshandbuch für Pinetwork -Knoten In diesem Artikel wird das Pinetwork -Ökosystem im Detail vorgestellt - PI -Knoten, eine Schlüsselrolle im Pinetwork -Ökosystem und vollständige Schritte für die Installation und Konfiguration. Nach dem Start des Pinetwork -Blockchain -Testnetzes sind PI -Knoten zu einem wichtigen Bestandteil vieler Pioniere geworden, die aktiv an den Tests teilnehmen und sich auf die bevorstehende Hauptnetzwerkveröffentlichung vorbereiten. Wenn Sie Pinetwork noch nicht kennen, wenden Sie sich bitte an was Picoin ist? Was ist der Preis für die Auflistung? PI -Nutzung, Bergbau und Sicherheitsanalyse. Was ist Pinetwork? Das Pinetwork -Projekt begann 2019 und besitzt seine exklusive Kryptowährung PI -Münze. Das Projekt zielt darauf ab, eine zu erstellen, an der jeder teilnehmen kann

So debuggen Sie Java Stream-Vorgänge in IntelliJ IDEA So debuggen Sie Java Stream-Vorgänge in IntelliJ IDEA May 09, 2023 am 11:25 AM

Der Stream-Betrieb ist ein Highlight von Java8! Obwohl java.util.stream sehr leistungsfähig ist, gibt es immer noch viele Entwickler, die es selten in der tatsächlichen Arbeit verwenden. Einer der am häufigsten beklagten Gründe ist, dass es zu Beginn schwierig zu debuggen ist, da Streaming-Vorgänge wie z als Stream kann in DEBUG nicht verwendet werden. Wenn es sich um eine Codezeile handelt, werden im nächsten Schritt tatsächlich viele Vorgänge gleichzeitig übergeben, sodass wir schwer beurteilen können, welche Zeile darin das Problem darstellt. Plug-in: JavaStreamDebugger Wenn die von Ihnen verwendete IDEA-Version relativ neu ist, ist dieses Plug-in bereits enthalten und muss nicht installiert werden. Wenn es noch nicht installiert ist, installieren Sie es manuell und fahren Sie dann unten fort.

Was tun, wenn npm node gyp ausfällt? Was tun, wenn npm node gyp ausfällt? Dec 29, 2022 pm 02:42 PM

npm node gyp schlägt fehl, weil „node-gyp.js“ nicht mit der Version von „Node.js“ übereinstimmt. Die Lösung ist: 1. Löschen Sie den Knotencache über „npm cache clean -f“ 2. Über „npm install -“ g n“ Installieren Sie das n-Modul. 3. Installieren Sie die Version „node v12.21.0“ über den Befehl „n v12.21.0“.

Tokenbasierte Authentifizierung mit Angular und Node Tokenbasierte Authentifizierung mit Angular und Node Sep 01, 2023 pm 02:01 PM

Die Authentifizierung ist einer der wichtigsten Teile jeder Webanwendung. In diesem Tutorial werden tokenbasierte Authentifizierungssysteme und ihre Unterschiede zu herkömmlichen Anmeldesystemen erläutert. Am Ende dieses Tutorials sehen Sie eine voll funktionsfähige Demo, die in Angular und Node.js geschrieben wurde. Traditionelle Authentifizierungssysteme Bevor wir zu tokenbasierten Authentifizierungssystemen übergehen, werfen wir einen Blick auf traditionelle Authentifizierungssysteme. Der Benutzer gibt seinen Benutzernamen und sein Passwort im Anmeldeformular ein und klickt auf „Anmelden“. Nachdem Sie die Anfrage gestellt haben, authentifizieren Sie den Benutzer im Backend, indem Sie die Datenbank abfragen. Wenn die Anfrage gültig ist, wird eine Sitzung mit den aus der Datenbank erhaltenen Benutzerinformationen erstellt und die Sitzungsinformationen werden im Antwortheader zurückgegeben, sodass die Sitzungs-ID im Browser gespeichert wird. Bietet Zugriff auf Anwendungen, die unterliegen

Was ist ein Single-Sign-On-System? Wie implementiert man es mit NodeJS? Was ist ein Single-Sign-On-System? Wie implementiert man es mit NodeJS? Feb 24, 2023 pm 07:33 PM

Was ist ein Single-Sign-On-System? Wie implementiert man es mit NodeJS? Im folgenden Artikel erfahren Sie, wie Sie mit Node ein Single-Sign-On-System implementieren. Ich hoffe, dass er Ihnen weiterhilft!

See all articles