nodejs writestream,node读取文件流

  nodejs writestream,node读取文件流

  本文介绍了Nodejs中的文件操作(创建和删除目录/文件、重命名、追加内容、读取内容),并简单谈了一下stream。

  node.js速度课程简介:进入学习

  

NodeJS文件操作

   NodeJS不仅在网络中大放异彩,还可以操作文件。逻辑上,只要合理使用这些API,加上一些数据处理,就可以完成很多局部操作。【推荐学习:《nodejs 教程》】在上一篇文章中,我们知道如果要引用一个模块,需要使用require。今天要介绍的主角是fs模块,是NodeJS内置的文件模块。这个模块有很多API供我们使用。

创建目录和文件

  我们可以使用fs.mkdir fs.writeFile分别创建目录和文件。Mkdir()可以接收三个参数,第一个是路径,第二个是表示权限的选项,我们一般不需要,第三个参数是回调函数,我们可以在里面做一些处理。/* learnNode.js */

  设fs=require( fs );

  fs.mkdir(js ,(err)={

  如果(错误){

  Console.log(“错误”)

  }否则{

  Console.log(无错误)

  }

  })writeFile()可以接收四个参数,第一个是路径,第二个是文件的内容,第三个选项代表权限,第四个是回调函数。/* learnNode.js */

  设fs=require( fs );

  Fs.writefile(。/js/newjs.js , console.log (write this ),(err)={

  如果(错误){

  Console.log(“错误”)

  }否则{

  Console.log(无错误)

  }

  })

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

检测文件

  我们可以通过fs.stat来检测一个路径的文件是目录还是文件,然后就可以做一些操作了。/* learnNode.js */

  设fs=require( fs );

  fs.stat(。/js/newJs.js ,(error,stats)={

  如果(错误){

  console.log(错误);

  返回false

  }否则{

  Console.log(`是文件吗:$ { stats . Is file()} `);

  console . log(` directory:$ { stats . is directory()} `);

  返回false

  }

  })star()主要接收两个参数。第一个是要检测的文件,第二个是回调函数。这个回调函数有两个参数,即err error和stats object。这个对象提供了关于文件的信息,我们可以判断这个对象的信息。

  

删除文件和删除目录

  既然我们可以使用NodeJS创建文件,当然我们也可以删除文件,主要使用两个API fs . unlink“fs . rmdir/* learn node . js */

  设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分别接收两个参数,path和回调函数。通过执行node learnNode.js,我们可以看到我们的文件已经被成功删除。

  

重命名

  我们可以使用fs.rename来重命名文件。/* learnNode.js */

  设fs=require( fs );

  fs.rename(oldJs.js , newJs.js ,(err)={

  如果(错误){

  Console.log(“错误”)

  }否则{

  Console.log(无错误)

  }

  })rename()可以接收三个参数,第一个是路径,第二个是更改后的名称,第三个是回调函数。值得注意的是,如果第一个参数和第二个参数对应的文件位置不同,他不会重命名前面的文件而是直接剪切到另一个地方。/* learnNode.js */

  设fs=require( fs );

  fs.rename(newJs.js ,)。/js/oldJs.js ,(err)={

  如果(错误){

  Console.log(“错误”)

  }否则{

  Console.log(剪切到js文件夹)

  }

  })

追加内容

  上面我们说了创建文件的时候可以顺便写点东西,那么可以直接在文件后面追加文字吗?我们可以使用fs.appendFile /* learnNode.js */

  设fs=require( fs );

  Fs.appendFile(newJs.txt ,我是追加的内容,(err)={

  如果(错误){

  Console.log(“错误”)

  }否则{

  Console.log(“附加内容”)

  }

  })appendFile()可以接收三个参数,第一个是路径,第二个是内容,第三个是回调函数。只需执行nodelearnNode.js。

  

读取文件和读取目录

  及以上都是添加、删除、修改文件的操作。现在我们还需要知道读什么。我们可以使用fs.readFile和fs.readdir分别读取文件和目录。/* learnNode.js */

  设fs=require( fs );

  fs.readFile(newJs.txt ,(err,data)={

  如果(错误){

  Console.log (error )。

  }否则{

  Console.log(成功读取文件!);

  console.log(数据);

  }

  })

  /* learnNode.js */

  设fs=require( fs );

  fs.readdir(。/,(err,data)={

  如果(错误){

  Console.log (error )。

  }否则{

  Console.log(成功读取目录!);

  console.log(数据);

  }

  })

  可以看到,我们两个API都接收两个参数,第一个是路径,第二个是回调函数。这个回调函数也有两个包含数据信息的参数,我们可以打印这个数据信息来获取内容。

stream(流)

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

读取流

   var fs=require( fs );

  var数据=“”;

  //创建可读的流

  var reader stream=fs . create readstream( newjs . txt );

  //将编码设置为utf8。

  reader stream . set encoding( UTF8 );

  //当处理流事件遇到数据时执行此操作。

  readerStream.on(data ,function(chunk) {

  数据=区块;

  Console.log(chunk,“流遇到数据”)

  });

  //在处理流事件流结束时执行此

  readerStream.on(end ,function(){

  Console.log(数据,“流尾”);

  });

  //当流事件流报告错误时处理此问题。

  readerStream.on(error ,function(err){

  控制台. log(err . stack);

  });

  Console.log(“程序执行完毕”);首先我们可以创建一个可读的流fs.createReadStream(),参数是你要读取的文件的路径。遇到数据会执行ReaderStream.on (data ,callback()),如下图所示。流结束时会执行ReaderStream.on(end ,callback()),如下图所示。

  

写入流

  我们已经在上面演示了如何通过流读取文件。接下来,让我们试着通过流写一个文件。var fs=require( fs );

  Var=我是吕霄,我会再给小溪写信;

  //创建一个可写的流,写入文件newJs.txt

  var writer stream=fs . createwritestream( newjs . txt );

  //使用utf8编码写入数据

  writerStream.write(data, UTF8 );

  //标记文件的结尾

  writer stream . end();

  //当处理流事件完成并报告错误时执行。

  writerStream.on(finish ,function() {

  Console.log(写入完成);

  });

  writerStream.on(error ,function(err){

  控制台. log(err . stack);

  });

  Console.log(“程序执行完毕”);首先,我们创建一个流,然后将数据写入newJs.txt文件。写入流时将执行Reader stream.on (finish ,callback()),如下图所示。

  你可以看到我们写的数据已经存在于这个newJs.txt文件中。

  

写在最后

  一般来说,NodeJS提供fs文件操作模块。这个模块有许多API,上面只是简单地展示了一下。还有很多有趣的API,只需要用的时候可以去官网查,因为NodeJS可以操作文件,从文件搜索到代码编译都可以。另一方面,大部分前端工具几乎只需要一些数据处理逻辑和一些文件操作就可以编写出来。

  有关编程的更多信息,请访问:编程视频!以上是Nodejs的文件操作和流的快速介绍。更多详情请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: