前端之家收集整理的这篇文章主要介绍了
详谈Node.js之操作文件系统,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在Node.js中,使用fs模块来实现所有有关文件及目录的创建、写入及删除操作。,在fs模块中,所有对文件及目录的操作都可以使用同步与异步这两种方法。这两者区别是:同步方法立即返回操作结果,在使用同步方法执行的操作结束之前,不能执行后续代码,代码类似如下:
而异步方法将操作结果作为回调函数的参数进行返回,在方法调用之后,可以立即执行后续代码,代码如下:
函数的第二个参数返回
console.log(data)
})
另外,当使用如下所示的方法调用多个异步方法时,并不能确保操作结果的返回顺序
函数
代码
})
fs.readFile('./otrher.html',data){
//回调
函数代码
})
在上述代码中,我们同时执行两个文件的读取操作,但是并不确保哪个操作结果先辈返回。如果要确保在一个问价读取完毕后再读取两一个文件,我们应使用如下方法:
函数
代码
})
fs.readFileSync('./otrher.html',data){
//回调
函数代码
})
2. 对文件执行读写操作
2.1 文件的完整读写
可以使用readFile方法或者readFileSync方法完整读取一个文件:
文件的完整
文件路径及
文件名
第二个参数:指定读取
文件时需要使用的选项,在该参数值对象中可以使用flag
属性指定对该
文件采取什么操作,默认为‘r'
option:
flag'r':读取
文件,如果
文件不存在则抛出异常
'r+':读取并写入
文件,如果
文件不存在则抛出异常
'rs':以同步方式读取
文件并
通知操作系统忽略本地
文件系统缓存,如果
文件不存在则抛出异常。因为本
属性值忽略本地缓存,适用于操作网络
文件系统,但由于其对
性能产生一定的负面影响,不建议在其他环境下使用
'w':写入
文件,如果
文件不存在则创建
文件,如果
文件存在则清空
文件内容
'wx':作用与'w'类似,但以排他方式写入
文件
'w+':读取并写入
文件。如果不存在则创建
文件,如果该
文件已存在则清空
文件内容
'wx+':作用与'w+'类似,但是以排他方式写入
文件
'a':追加写入
文件,如果
文件不存在则创建
文件
'ax':作用与'a+'类似,但是以排他方式打开
文件
encoding:
utf8,ascii,base64,
callback(err,data){
//回调
函数代码略
}
//第一个参数为读取
文件操作失败时触发的
错误对象
第二个参数值为读取到的
文件内容
在使用同步方法读取文件时,使用readFileSync方法:
eg:
输出
文件内容
console.log(data)
}catch(ex){
console.log('读取
文件时发生
错误')
}
在完整写入一个文件时,利用fs模块中的writeFile方法或者writeFileSync方法
文件的完整
文件路径及
文件名
第二个参数:用于指定需要写入的
内容,参会素可以为一个字符串或一个Buffer对象
第三个参数:指定写入
文件时需要的选项
flag
属性:用于指定该
文件采用何种操作,默认为'w'
mode
属性:指定当
文件被打开时对
文件的读写权限,默认为0666(可读写),第一位必须为0,第二位用于规定
文件或目录所有者的权限,第三位为
文件或目录所属
用户组的权限,第四位为其他
用户权限
1:执行权限
2:写权限
4:读权限
encoding
属性:指定使用何种编码格式来写入
文件,:utf8 ascii base64
callback(err){
//回调函数代码
}
在使用同步方式写入文件时,使用writeFileSync方法:
在将一个字符串或一个缓存区中的数据追加到一个文件底部时,可使用fs模块中的appendFile或者appendFildSync方法
2.2 从指定位置处开始读写文件
首先需要使用fs模块中的open方法或者openSync方法打开文件,
函数
代码
}
//第一个参数为打开
文件操作失败时所触发的
错误对象,
第二个参数为一个整数值,代表打开
文件时返回的
文件描述符
使用同步方式打开文件时,使用openSync方法:
在打开文件之后,可以在回调函数中使用fs模块中的read方法或者readSync方法从文件的指定位置处读取文件,也可以使用fs模块中的write方法或者writeSync方法从文件的指定处开始写入数据
首先介绍read方法:
方法所所使用的回调
函数中返回的
文件描述符或openSync
方法返回的
文件描述符;
第二个参数:英语指定将
文件数据读取到哪个缓存区;
第三个参数:整数,用于指定向缓存区中写入数据时的开始位置,以字节为单位
第四个参数:整数,指定从
文件中读取的字节数
第五个参数:整数,指定读取
文件时开始位置
callback(err,bytesRead,buffer){
//回调
函数代码
}
err:读取
文件操作失败时触发的
错误对象
bytesRead实际读取的字节数
buffer:被读取的缓存区对象
使用同步方式打开文件时,使用readSync方法:
在打开文件后,使用fs模块中的write方法或者writeSync方法从一个缓存区中读取数据并且从文件的指定处开始吸入这些数据
其中callback为function(err,written,buffer){
//回调
函数代码
}
eg:
1 var fs = require('fs')
2 var buf = new Buffer('我喜欢编程')
3 fs.open('./message.txt','w',fd){
4 fs.write(fd,buf,3,9,written,buffer){
5 if(err)console.log("写
文件操作失败")
6 console.log("写
文件操作成功")
7 })
8 })
在使用同步方式写入文件时,使用writeSync 方法
在fs模块中,使用close方法与closeSync方法以关闭文件
调用close方法前,可以利用fsyn方法将缓存区内容全部写入文件,防止出现遗漏数据
以上这篇详谈Node.js之操作文件系统就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程之家。
原文链接:https://www.f2er.com/nodejs/36784.html