Node.js文件系统操作

这次给大家带来Node.js文件系统操作,Node.js文件系统操作的注意事项有哪些,下面就是实战案例,一起来看一下。

1. 同步方法与异步方法

在Node.js中,使用fs模块来实现所有有关文件及目录的创建、写入及删除操作。,在fs模块中,所有对文件及目录的操作都可以使用同步与异步这两种方法。这两者区别是:同步方法立即返回操作结果,在使用同步方法执行的操作结束之前,不能执行后续代码,代码类似如下:

Var fs = require('fs')var data = fs.readFileSysnc('./index.html','utf8')//等待操作返回结果,然后利用该结果console.log(data)

登录后复制

而异步方法将操作结果作为回调函数的参数进行返回,在方法调用之后,可以立即执行后续代码,代码如下:

var fs = require('fs')fs.readFile('./index.html','utf8'.function(err,data){  //操作结果作为回调函数的第二个参数返回  console.log(data)})

登录后复制

另外,当使用如下所示的方法调用多个异步方法时,并不能确保操作结果的返回顺序

fs.readFile('./file.html',function(err,data){  //回调函数代码  })fs.readFile('./otrher.html',function(err,data){  //回调函数代码  })

登录后复制

在上述代码中,我们同时执行两个文件的读取操作,但是并不确保哪个操作结果先辈返回。如果要确保在一个问价读取完毕后再读取两一个文件,我们应使用如下方法:

fs.readFileSync('./file.html',function(err,data){  //回调函数代码  })fs.readFileSync('./otrher.html',function(err,data){  //回调函数代码  })

登录后复制

2. 对文件执行读写操作

2.1 文件的完整读写

可以使用readFile方法或者readFileSync方法完整读取一个文件:

fs.readFile(filename,[options],callback)//第一个参数:必选指定读取文件的完整文件路径及文件名第二个参数:指定读取文件时需要使用的选项,在该参数值对象中可以使用flag属性指定对该文件采取什么操作,默认为‘r'option:  flag'r':读取文件,如果文件不存在则抛出异常    'r+':读取并写入文件,如果文件不存在则抛出异常    'rs':以同步方式读取文件并通知操作系统忽略本地文件系统缓存,如果文件不存在则抛出异常。因为本属性值忽略本地缓存,适用于操作网络文件系统,但由于其对性能产生一定的负面影响,不建议在其他环境下使用    'w':写入文件,如果文件不存在则创建文件,如果文件存在则清空文件内容    'wx':作用与'w'类似,但以排他方式写入文件    'w+':读取并写入文件。如果不存在则创建文件,如果该文件已存在则清空文件内容           'wx+':作用与'w+'类似,但是以排他方式写入文件           'a':追加写入文件,如果文件不存在则创建文件    'ax':作用与'a+'类似,但是以排他方式打开文件  encoding:    utf8,ascii,base64,callback(err,data){  //回调函数代码略}//第一个参数为读取文件操作失败时触发的错误对象第二个参数值为读取到的文件内容

登录后复制

在使用同步方法读取文件时,使用readFileSync方法:

var data = fs.readFileSync(filename,[options])

登录后复制

eg:

var fs = require('fs')try{  var data = fs.readFileSync('./text.txt','utf8')  //在控制台中输出文件内容  console.log(data) }catch(ex){  console.log('读取文件时发生错误')}

登录后复制

在完整写入一个文件时,利用fs模块中的writeFile方法或者writeFileSync方法

fs.writeFile(filename,datda,[options],callback)//第一个参数:用于指定被写入文件的完整文件路径及文件名第二个参数:用于指定需要写入的内容,参会素可以为一个字符串或一个Buffer对象第三个参数:指定写入文件时需要的选项    flag属性:用于指定该文件采用何种操作,默认为'w'    mode属性:指定当文件被打开时对文件的读写权限,默认为0666(可读写),第一位必须为0,第二位用于规定文件或目录所有者的权限,第三位为文件或目录所属用户组的权限,第四位为其他用户权限      1:执行权限      2:写权限      4:读权限    encoding属性:指定使用何种编码格式来写入文件,:utf8 ascii base64    callback(err){  //回调函数代码}

登录后复制

在使用同步方式写入文件时,使用writeFileSync方法:

fs.writeFileSync(filename,data,[options])

登录后复制

在将一个字符串或一个缓存区中的数据追加到一个文件底部时,可使用fs模块中的appendFile或者appendFildSync方法

fs.appendFile(filname,data,[options],callback)fs.appendFileSync(filename,data[options])

登录后复制

2.2 从指定位置处开始读写文件

首先需要使用fs模块中的open方法或者openSync方法打开文件,

fs.open(filename,flags,[mode],callback)其中callback参数为:function(err,fd){            //回调函数代码          }//第一个参数为打开文件操作失败时所触发的错误对象,第二个参数为一个整数值,代表打开文件时返回的文件描述符

登录后复制

使用同步方式打开文件时,使用openSync方法:

var fd = fs.openSync(filename,flag,[mode])

登录后复制

在打开文件之后,可以在回调函数中使用fs模块中的read方法或者readSync方法从文件的指定位置处读取文件,也可以使用fs模块中的write方法或者writeSync方法从文件的指定处开始写入数据

首先介绍read方法:

fs.read(fd,buffer,offset,length,position,callback)//第一个参数:open方法所所使用的回调函数中返回的文件描述符或openSync方法返回的文件描述符;第二个参数:英语指定将文件数据读取到哪个缓存区;第三个参数:整数,用于指定向缓存区中写入数据时的开始位置,以字节为单位第四个参数:整数,指定从文件中读取的字节数第五个参数:整数,指定读取文件时开始位置callback(err,bytesRead,buffer){  //回调函数代码}err:读取文件操作失败时触发的错误对象bytesRead实际读取的字节数buffer:被读取的缓存区对象

登录后复制

使用同步方式打开文件时,使用readSync方法:

var byteRead = fs.readSync(fd,buffer,offset,length,position)

登录后复制

在打开文件后,使用fs模块中的write方法或者writeSync方法从一个缓存区中读取数据并且从文件的指定处开始吸入这些数据

fs.write(fd,buffer,offset,length,position,callback)  其中callback为function(err,written,buffer){            //回调函数代码        }eg: 1 var fs = require('fs') 2 var buf = new Buffer('我喜欢编程') 3 fs.open('./message.txt','w',function(err,fd){ 4     fs.write(fd,buf,3,9,0,function(err,written,buffer){ 5         if(err)console.log("写文件操作失败") 6         console.log("写文件操作成功") 7     }) 8 })

登录后复制

在使用同步方式写入文件时,使用writeSync 方法

fs.writeSync(fd,buffer,offset,length,position)

登录后复制

在fs模块中,使用close方法与closeSync方法以关闭文件

fs.close(fd,[callbcak])fs.closeSync(fd)

登录后复制

调用close方法前,可以利用fsyn方法将缓存区内容全部写入文件,防止出现遗漏数据

fs.fsyn(fd,[callback])

登录后复制

                                        

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

HTML标签与DOM节点结合

JS隐式类型转换总结

以上就是Node.js文件系统操作的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2770859.html

(0)
上一篇 2025年3月8日 12:42:54
下一篇 2025年3月8日 12:43:04

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • js链表使用详解

    这次给大家带来js链表使用详解,js链表使用的注意事项有哪些,下面就是实战案例,一起来看一下。 如下所示: Document function Node(v){ this.value=v; this.next=null; } functio…

    编程技术 2025年3月8日
    200
  • 页面内引入js有哪些方法

    这次给大家带来页面内引入js有哪些方法,页面内引入js的注意事项有哪些,下面就是实战案例,一起来看一下。 在页面中引入js有两种基本方式:在页面中嵌入js、引用外部js文件。 一、在页面中嵌入js 这是在页面使用js最简单的方式了,一般我在…

    编程技术 2025年3月8日
    200
  • node.js操作音视频文件进行加密

    这次给大家带来node.js操作音视频文件进行加密,node.js操作音视频文件进行加密的注意事项有哪些,下面就是实战案例,一起来看一下。 fs.readFile(‘./downsuccess/’+name+”, {flag: ‘r+’,…

    编程技术 2025年3月8日
    200
  • js发布者订阅者模式使用详解

    这次给大家带来js发布者订阅者模式使用详解,js发布者订阅者模式使用的注意事项有哪些,下面就是实战案例,一起来看一下。 发布者订阅者模式,是一种很常见的模式,比如: 一、买卖房子 生活中的买房,卖房,中介就构成了一个发布订阅者模式,买房的人…

    编程技术 2025年3月8日
    200
  • js如何设置禁止表单重复提交

                    function formsubmit() {  Today = new Date();  var NowHour = Today.getHours();  var NowMinute = Today.get…

    编程技术 2025年3月8日
    200
  • canvas怎么编辑操作图像

    这次给大家带来canvas怎么编辑操作图像,canvas编辑操作图像的注意事项有哪些,下面就是实战案例,一起来看一下。 本次文章将分为几个小功能的形式来详细介绍canvas图像编辑 缩放 下面是一张分析图,假设默认情况下,图片和canvas…

    编程技术 2025年3月8日
    200
  • JS实现排序方法总结

    这次给大家带来JS实现排序方法总结,JS实现排序的注意事项有哪些,下面就是实战案例,一起来看一下。 冒泡排序 function Bubble(arr){ var temp; for(var i=0;i<arr.length-1;i++…

    编程技术 2025年3月8日
    200
  • js设置元素样式步奏详解

    这次给大家带来js设置元素样式步奏详解,js设置元素样式的注意事项有哪些,下面就是实战案例,一起来看一下。 很多人对于js的开发中,不知道其元素样式具体怎么设置,这次文章就给大家带来js设置教程,让大家更好的了解js怎么设置的,感兴趣的下面…

    编程技术 2025年3月8日
    200
  • js原型对象使用的步奏详解

    这次给大家带来js原型对象使用的步奏详解,js原型对象使用的的注意事项有哪些,下面就是实战案例,一起来看一下。 我们先来一个简单的构造函数+原型对象的小程序 function CreateObj( uName, uAge ) { this.…

    编程技术 2025年3月8日
    200
  • JS实现推拉门动效

    这次给大家带来JS实现推拉门动效,JS实现推拉门动效的注意事项有哪些,下面就是实战案例,一起来看一下。 “推拉门”实现方法一:改变图片宽度 html+css代码 <!– ![](images/slidepic…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论