Heim  >  Artikel  >  Web-Frontend  >  Machen Sie sich schnell mit den Dateioperationen und Streams (Streams) von Nodejs vertraut.

Machen Sie sich schnell mit den Dateioperationen und Streams (Streams) von Nodejs vertraut.

青灯夜游
青灯夜游nach vorne
2021-08-18 10:22:482329Durchsuche

Dieser Artikel stellt Ihnen die Dateioperationen in Nodejs vor (Verzeichnisse/Dateien erstellen und löschen, umbenennen, Inhalte anhängen, Inhalte lesen) und geht kurz auf Streams ein.

Machen Sie sich schnell mit den Dateioperationen und Streams (Streams) von Nodejs vertraut.

NodeJS-Dateioperation

创建目录和文件

  • 我们可以使用fs.mkdir fs.writeFile来分别创建目录和文件。
  • mkdir()可以接收三个参数,第一个是路径,第二个是个可选项代表权限,这个我们一般不需要,第三个参数是一个回调函数,我们可以在这里面做一些处理。
/* learnNode.js */
let fs = require('fs');
fs.mkdir('js',(err)=>{
  if(err){
    console.log('出错')
  }else{
    console.log('未出错')
  }
})
  • writeFile()可以接收四个参数,第一个是路径,第二个是文件内容,第三个可选项代表权限,第四个是回调函数。
/* learnNode.js */
let fs = require('fs');
fs.writeFile('./js/newJs.js','console.log("写入这个")',(err)=>{
  if(err){
    console.log('出错')
  }else{
    console.log('没出错')
  }
})

Machen Sie sich schnell mit den Dateioperationen und Streams (Streams) von Nodejs vertraut.

  • 可以看到我们成功创建了目录并写入了一个文件。

检测文件

  • 我们可以通过fs.stat来检测一个路径的文件是为目录还是文件,进而可以做一些操作。
/* learnNode.js */
let fs = require('fs');
fs.stat('./js/newJs.js', (error, stats) => {
  if(error) {
    console.log(error);
    return false;
  } else {
    console.log(`是否文件:${stats.isFile()}`); 
    console.log(`是否目录:${stats.isDirectory()}`); 
    return false;
  }
})
  • star()主要接收两个参数第一个是要检测的文件,第二个是一个回调函数,这个回调函数有两个参数,分别是err错误和stats对象,这个对象提供有关文件的信息,我们可以对这个对象信息来进行判断。

Machen Sie sich schnell mit den Dateioperationen und Streams (Streams) von Nodejs vertraut.

删除文件和删除目录

  • 既然我们可以使用NodeJS创建文件那当然我们也可以删除文件,主要使用的是fs.unlink``fs.rmdir这两个API
/* learnNode.js */
let fs = require('fs');
fs.unlink('./js/newJs.js', (err) => {
  if (err) throw err;
  console.log('文件已删除');
});
fs.rmdir('./js',(err)=>{
  if (err) throw err;
  console.log('目录已删除');
})
  • 这两个API都分别接收两个参数是路径和回调函数,执行node learnNode.js可以看到我们文件已经成功删除。

Machen Sie sich schnell mit den Dateioperationen und Streams (Streams) von Nodejs vertraut.

重命名

  • 我们可以使用fs.rename来对文件重命名。
/* learnNode.js */
let fs = require('fs');
fs.rename('oldJs.js','newJs.js',(err)=>{
  if(err){
    console.log('出错')
  }else{
    console.log('未出错')
  }
})
  • rename()可以接收三个参数第一个是路径第二个是更改的名称,第三个是回调函数,值得注意的是,如果第一个参数和第二个参数对应的文件所在的位置不一样时,他不会重命名之前那个文件而是直接把文件剪切放到另一个地方。
/* learnNode.js */
let fs = require('fs');
fs.rename('newJs.js','./js/oldJs.js',(err)=>{
  if(err){
    console.log('出错')
  }else{
    console.log('剪切到js文件夹内了')
  }
})

追加内容

  • 上面我们说到创建文件的时候可以顺便写入东西,那么我们可不可以直接在文件追加文字呢?我们可以使用fs.appendFile
/* learnNode.js */
let fs = require('fs');
fs.appendFile('newJs.txt','我是追加的内容',(err)=>{
  if(err){
    console.log('出错')
  }else{
    console.log('追加内容')
  }
})
  • appendFile()可以接收三个参数,第一个是路径,第二个是内容,第三个是回调函数,执行node learnNode.js即可。

Machen Sie sich schnell mit den Dateioperationen und Streams (Streams) von Nodejs vertraut.

读取文件和读取目录

  • 以上都是对文件进行增删改的操作,我们现在还需要掌握一下读取内容,我们可以使用fs.readFilefs.readdir"]
inVorheriger Artikel

Wir wissen, dass wir require , und der Protagonist, den wir heute vorstellen möchten, ist das <code>fs-Modul, ein in NodeJS integriertes Dateimodul. Dieses Modul verfügt über viele APICode> für uns. <img src="https://img.php.cn/upload/image/235/577/894/162925288115805Machen%20Sie%20sich%20schnell%20mit%20den%20Dateioperationen%20und%20Streams%20(Streams)%20von%20Nodejs%20vertraut." title="162925288115805Machen Sie sich schnell mit den Dateioperationen und Streams (Streams) von Nodejs vertraut." alt="Machen Sie sich schnell mit den Dateioperationen und Streams (Streams) von Nodejs vertraut.">

Verzeichnisse und Dateien erstellenMachen Sie sich schnell mit den Dateioperationen und Streams (Streams) von Nodejs vertraut.

🎜Wir können fs.mkdir fs.writeFile verwenden, um Erstellen Sie Verzeichnisse und Dateien separat. 🎜🎜mkdir() kann drei Parameter empfangen, der erste ist der Pfad, der zweite ist eine optionale Option, die Berechtigungen darstellt, wir brauchen das im Allgemeinen nicht, der dritte Parameter ist eine Rückruffunktion, das können wir Führen Sie hier etwas Verarbeitung durch. 🎜🎜
/* learnNode.js */
let fs = require(&#39;fs&#39;);
fs.readFile(&#39;newJs.txt&#39;, (err, data) => {
  if(err) {
    console.log(&#39;出错&#39;);
  } else {
    console.log("读取文件成功!");
    console.log(data);
  }
})
🎜🎜writeFile() kann vier Parameter empfangen, der erste ist der Pfad, der zweite ist der Dateiinhalt, die dritte Option stellt Berechtigungen dar und der vierte ist die Rückruffunktion. 🎜🎜
/* learnNode.js */
let fs = require(&#39;fs&#39;);
fs.readdir(&#39;./&#39;, (err, data) => {
  if(err) {
    console.log(&#39;出错&#39;);
  } else {
    console.log("读取目录成功!");
    console.log(data);
  }
})
🎜Machen Sie sich schnell mit den Dateioperationen und Streams (Streams) von Nodejs vertraut.🎜 🎜🎜Sie können sehen, dass wir das Verzeichnis erfolgreich erstellt und eine Datei geschrieben haben. 🎜🎜

🎜Dateien erkennen🎜

🎜🎜Wir können fs.stat verwenden, um zu erkennen, ob eine Datei in einem Pfad ein Verzeichnis oder ein Verzeichnis ist Datei, und dann können einige Vorgänge ausgeführt werden. 🎜🎜
var fs = require("fs");
var data = &#39;&#39;;
// 创建可读流
var readerStream = fs.createReadStream(&#39;newJs.txt&#39;);
// 设置编码为 utf8。
readerStream.setEncoding(&#39;UTF8&#39;);
// 处理流事件 遇到有数据时执行这个
readerStream.on(&#39;data&#39;, function(chunk) {
  data += chunk;
  console.log(chunk,&#39;流遇到数据了&#39;)
});
// 处理流事件 流结束时执行这个
readerStream.on(&#39;end&#39;,function(){
  console.log(data,&#39;流结束了&#39;);
});
 // 处理流事件 流报错时执行这个
readerStream.on(&#39;error&#39;, function(err){
  console.log(err.stack);
});
console.log("程序执行完毕");
🎜🎜star() empfängt hauptsächlich zwei Parameter. Der erste ist die zu erkennende Datei und der zweite ist eine Rückruffunktion. Diese Rückruffunktion verfügt über zwei Parameter, nämlich err error und stats Objekt, dieses Objekt stellt Informationen über die Datei bereit, wir können diese Objektinformationen beurteilen. 🎜🎜🎜Machen Sie sich schnell mit den Dateioperationen und Streams (Streams) von Nodejs vertraut.🎜🎜Dateien löschen und Verzeichnisse löschen🎜🎜🎜Da wir NodeJS zum Erstellen von Dateien verwenden können, können wir natürlich auch Dateien löschen, hauptsächlich mit fs.unlink``fs.rmdirDiese beiden API. 🎜🎜
var fs = require("fs");
var data = &#39;我是小卢,我再写入流&#39;;
// 创建一个可以写入的流,写入到文件 newJs.txt 中
var writerStream = fs.createWriteStream(&#39;newJs.txt&#39;);
// 使用 utf8 编码写入数据
writerStream.write(data,&#39;UTF8&#39;);
// 标记文件末尾
writerStream.end();
// 处理流事件 完成和报错时执行
writerStream.on(&#39;finish&#39;, function() {
    console.log("写入完毕");
});
writerStream.on(&#39;error&#39;, function(err){
   console.log(err.stack);
});
console.log("程序执行完毕");
🎜🎜Beide API erhalten zwei Parameter, nämlich Pfad und Rückruffunktion. Wenn Sie node learnNode.js ausführen, können Sie sehen, dass unsere Datei erfolgreich gelöscht wurde. 🎜🎜🎜Machen Sie sich schnell mit den Dateioperationen und Streams (Streams) von Nodejs vertraut.🎜🎜Umbenennen🎜🎜🎜Wir können fs.rename verwenden, um die Datei umzubenennen. 🎜🎜rrreee🎜🎜rename() kann drei Parameter empfangen. Der erste ist der Pfad, der zweite ist der geänderte Name und der dritte ist die Rückruffunktion Wenn der Speicherort der Datei, die dem zweiten Parameter entspricht, unterschiedlich ist, wird die vorherige Datei nicht umbenannt, sondern die Datei direkt ausgeschnitten und an einem anderen Speicherort abgelegt. 🎜🎜rrreee

🎜Inhalt anhängen🎜

🎜🎜Wir haben oben erwähnt, dass wir beim Erstellen einer Datei Dinge schreiben können. Können wir also Text direkt an die Datei anhängen? Wir können fs.appendFile verwenden. 🎜🎜rrreee🎜🎜appendFile() kann drei Parameter empfangen, der erste ist der Pfad, der zweite ist der Inhalt und der dritte ist die Rückruffunktion, führen Sie node learnNode.js aus Code> reicht aus. 🎜🎜🎜<img src="https://img.php.cn/upload/image/847/247/243/162925287798940Machen%20Sie%20sich%20schnell%20mit%20den%20Dateioperationen%20und%20Streams%20(Streams)%20von%20Nodejs%20vertraut." title="162925287798940Machen Sie sich schnell mit den Dateioperationen und Streams (Streams) von Nodejs vertraut." alt="Machen Sie sich schnell mit den Dateioperationen und Streams (Streams) von Nodejs vertraut.">🎜🎜Dateien lesen und Verzeichnisse lesen🎜🎜🎜Die oben genannten Vorgänge sind alle Vorgänge zum Hinzufügen, Löschen und Ändern von Dateien. Wir müssen jetzt auch den Leseinhalt beherrschen <code>fs.readFile und fs.readdir lesen Dateien bzw. Verzeichnisse. 🎜🎜rrreee🎜🎜🎜rrreee🎜🎜🎜
  • 可以看到我们两个API都是接收两个参数,第一个是路径,第二个是回调函数,这个回调函数也有两个参数里面包含了data信息,我们可以打印这个data信息来获取内容。

stream(流)

  • 最后我们来简单聊聊stream,翻译过来就是的意思,提到流你会想到什么,河流,水流,都是从一个源头到另一个源头,就像水龙头从开关到流到地面,stream也是这样一个过程。
  • Stream 有四种流类型:
    • Readable - 可读操作。
    • Writable - 可写操作。
    • Duplex - 可读可写操作.
    • Transform - 操作被写入数据,然后读出结果。
  • 在stream的过程中,我们也有事件可以使用,比如检测到错误触发的error,有数据时触发的data
    • data - 当有数据可读时触发。
    • end - 没有更多的数据可读时触发。
    • error - 在接收和写入过程中发生错误时触发。
    • finish - 所有数据已被写入到底层系统时触发。
  • 接下来简单举个例子理解一下吧。

读取流

var fs = require("fs");
var data = &#39;&#39;;
// 创建可读流
var readerStream = fs.createReadStream(&#39;newJs.txt&#39;);
// 设置编码为 utf8。
readerStream.setEncoding(&#39;UTF8&#39;);
// 处理流事件 遇到有数据时执行这个
readerStream.on(&#39;data&#39;, function(chunk) {
  data += chunk;
  console.log(chunk,&#39;流遇到数据了&#39;)
});
// 处理流事件 流结束时执行这个
readerStream.on(&#39;end&#39;,function(){
  console.log(data,&#39;流结束了&#39;);
});
 // 处理流事件 流报错时执行这个
readerStream.on(&#39;error&#39;, function(err){
  console.log(err.stack);
});
console.log("程序执行完毕");
  • 我们一开始可以创建一个可读流fs.createReadStream(),参数是你要读的文件路径。
  • 当遇到了数据时会执行readerStream.on('data',callback()),如下图所示。
  • 当流结束时会执行readerStream.on('end',callback()),如下图所示。

Machen Sie sich schnell mit den Dateioperationen und Streams (Streams) von Nodejs vertraut.

写入流

  • 我们上面演示了如何通过流读取一个文件,接下来我们试试通过流写入文件。
var fs = require("fs");
var data = &#39;我是小卢,我再写入流&#39;;
// 创建一个可以写入的流,写入到文件 newJs.txt 中
var writerStream = fs.createWriteStream(&#39;newJs.txt&#39;);
// 使用 utf8 编码写入数据
writerStream.write(data,&#39;UTF8&#39;);
// 标记文件末尾
writerStream.end();
// 处理流事件 完成和报错时执行
writerStream.on(&#39;finish&#39;, function() {
    console.log("写入完毕");
});
writerStream.on(&#39;error&#39;, function(err){
   console.log(err.stack);
});
console.log("程序执行完毕");
  • 我们首先创建一个流,然后将data数据写入newJs.txt文件中。
  • 当流写入完毕时会执行readerStream.on('finish',callback()),如下图所示。

Machen Sie sich schnell mit den Dateioperationen und Streams (Streams) von Nodejs vertraut.

  • 可以看到该newJs.txt文件中已经存在了我们写入的数据。

Machen Sie sich schnell mit den Dateioperationen und Streams (Streams) von Nodejs vertraut.

写在最后

总的来说NodeJS提供了fs文件操作模块,这个模块有很多的API,上面只是简单的展示了一下,还有很多有趣的API大家只需要用到的时候去官网查就好了,因为NodeJS能操作文件,小至文件查找,大至代码编译。换个角度讲,几乎也只需要一些数据处理逻辑,再加上一些文件操作,就能够编写出大多数前端工具。

原文地址:https://juejin.cn/post/6997204352683212831

作者:快跑啊小卢_

更多编程相关知识,请访问:编程视频!!

Das obige ist der detaillierte Inhalt vonMachen Sie sich schnell mit den Dateioperationen und Streams (Streams) von Nodejs vertraut.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:掘金--快跑啊小卢_. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen