站长资讯网
最全最丰富的资讯网站

快速带你入门Nodejs的文件操作和stream(流)

本篇文章给大家介绍一下Nodejs中的文件操作(创建和删除目录/文件、重命名、追加内容、读取内容),以及简单聊聊stream(流)。

快速带你入门Nodejs的文件操作和stream(流)

NodeJS文件操作

  • NodeJS除了在网络方面大放异彩,它还可以对文件进行操作,按逻辑上来说只要我们合理运用这些api再加上一些数据处理,我们就可以完成本地很多的操作。【推荐学习:《nodejs 教程》】
  • 在上一篇我们知道如果想引用一个模块则需要使用到require,而今天要介绍的主角是fs模块,也就是NodeJS内置的一个文件模块,这个模块有很多的API供我们使用。

创建目录和文件

  • 我们可以使用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('没出错')   } })

快速带你入门Nodejs的文件操作和stream(流)

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

检测文件

  • 我们可以通过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对象,这个对象提供有关文件的信息,我们可以对这个对象信息来进行判断。

快速带你入门Nodejs的文件操作和stream(流)

删除文件和删除目录

  • 既然我们可以使用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可以看到我们文件已经成功删除。

快速带你入门Nodejs的文件操作和stream(流)

重命名

  • 我们可以使用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即可。

快速带你入门Nodejs的文件操作和stream(流)

读取文件和读取目录

  • 以上都是对文件进行增删改的操作,我们现在还需要掌握一下读取内容,我们可以使用fs.readFilefs.readdir分别读取文件和读取目录。
/* learnNode.js */ let fs = require('fs'); fs.readFile('newJs.txt', (err, data) => {   if(err) {     console.log('出错');   } else {     console.log("读取文件成功!");     console.log(data);   } })

快速带你入门Nodejs的文件操作和stream(流)

/* learnNode.js */ let fs = require('fs'); fs.readdir('./', (err, data) => {   if(err) {     console.log('出错');   } else {     console.log("读取目录成功!");     console.log(data);   } })

快速带你入门Nodejs的文件操作和stream(流)

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

stream(流)

  • 最后我们来简单聊聊stream,翻译过来就是的意思,提到流你会想到什么,河流,水流,都是从一个源头到另一个源头,就像水龙头从开关到流到地面,stream也是这样一个过程。
  • Stream 有四种流类型:
    • Readable – 可读操作。
    • Writable – 可写操作。
    • Duplex – 可读可写操作.
    • Transform – 操作被写入数据,然后读出结果。
  • 在stream的过程中,我们也有事件可以使用,比如检测到错误触发的error,有数据时触发的data
    • data – 当有数据可读时触发。
    • end – 没有
赞(0)
分享到: 更多 (0)
网站地图   沪ICP备18035694号-2    沪公网安备31011702889846号