博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
node的fs模块
阅读量:7031 次
发布时间:2019-06-28

本文共 2567 字,大约阅读时间需要 8 分钟。

node的file system模块提供的api有同步和异步两种模式(大多数情况下都是用的异步方法,毕竟异步是node的特色,至于提供同步方法,可能应用程序复杂的时候有些场景使用同步会比较合适)。异步方法里回调函数的第一个参数往往是个err对象,最后一个参数是返回的操作结果。

node里面有很多模块,不少模块里面又有很多api,没必要短时间内一个个读完,因此只需要记住每个模块中最常用的一些api就好了。

*在使用同步模式的api时,error是即时抛出的,因此同步方法最好放在一个try{}catch{}块中。

*在使用异步模式的api时,如果一组任务之间是有先后次序的,要注意把下一个任务嵌在上一个任务的callback中。

*对文件读写时,可以使用相对路径,不过这个相对路径是相对于process.cwd()的。

Class: fs.ReadStream/fs.WriteStream:

.open()

.close()

.path

.bytesRead

--------------------------------------

Class: fs.Stats: ,  and 的返回对象。

stats.isFile()

stats.isDirectory()
stats.isBlockDevice()
stats.isCharacterDevice()
stats.isSymbolicLink() (only valid with fs.lstat())
stats.isFIFO()
stats.isSocket()

--------------------------------------

fs.access(path[, mode], callback):

用于检测用户对path中的文件/文件夹的权限;其中mode有下面四个值:

fs.constants.F_OK  对调用该方法的进程可见

fs.constants.R_OK  可读
fs.constants.W_OK  可写
fs.constants.X_OK 可执行

文档不推荐在fs.open(), fs.readFile() or fs.writeFile()方法前使用access方法,推荐直接使用open/read/write即可。access方法应该在不直接使用path路径下的文件的时候调用。

--------------------------------------

fs.appendFile(file, data[, options], callback):给文档追加数据

1 fs.appendFile('message.txt', 'data to append', (err) => {2   if (err) throw err;3   console.log('The "data to append" was appended to file!');4 });

data:可以是字符|buffer

option:obj|string:为obj时候可设置的参数有:encoding 、mode 、flag;为string时则指定编码格式如‘utf-8’

-------------------------------------

fs.createReadStream(path[, options]):返回一个readStream实例

option是如下的默认对象,如果opton是字符串,则只是指定编码格式:

1 const defaults = {2   flags: 'r',3   encoding: null,4   fd: null,5   mode: 0o666,6   autoClose: true7 };

*如果指定了fd,则path参数会被忽略;open事件也不会被触发。Note that fd should be blocking; non-blocking fds should be passed to net.Socket.

-----------------------------

fs.createWriteStream(path[, options]):参考createReadStream

-----------------------------------

fs.exists(path, callback):判断路径中的文件/文件夹是否存在

1 fs.exists('/etc/passwd', (exists) => {2   console.log(exists ? 'it\'s there' : 'no passwd!');3 });

文档推荐使用.access()而不是.exists(),因为access的回调里有err参数,而exists只是返回一个布尔值。另外也不推荐在.open/write/read文件之前使用exists方法检测。

RECOMMENDED:

1 fs.open('myfile', 'wx', (err, fd) => { 2   if (err) { 3     if (err.code === 'EEXIST') { 4       console.error('myfile already exists'); 5       return; 6     } 7     throw err; 8   } 9   writeMyData(fd);10 });
1 fs.open('myfile', 'r', (err, fd) => { 2   if (err) { 3     if (err.code === 'ENOENT') { 4       console.error('myfile does not exist'); 5       return; 6     } 7     throw err; 8   } 9   readMyData(fd);10 });

后面还有好几十个方法。。。罢了罢了先停一下。

 

转载于:https://www.cnblogs.com/alan2kat/p/7425828.html

你可能感兴趣的文章
Visual Studio 2017 15.6发布
查看>>
2019年Java和JVM生态系统预测:OpenJDK将成为Java运行时市场领导者
查看>>
拥抱PostgreSQL,红帽再表态:SSPL的MongoDB坚决不用
查看>>
架构设计复杂度的6个来源
查看>>
360首席安全官谭晓生宣布离职
查看>>
在敏捷中应用测试驱动开发
查看>>
到底谁应该对软件开发的质量负责?
查看>>
微软Windows Core OS被曝应用了开源组件
查看>>
用Elm语言降低失败的风险
查看>>
资深专家都知道的Docker常用命令
查看>>
谈谈UCloud的秒级在线快照服务
查看>>
Spring Web Services 3.0.4.RELEASE和2.4.3.RELEASE发布
查看>>
EGO走进美团——追寻千亿市场背后的技术力量
查看>>
腾讯正式宣布成立技术委员会,要对组织架构下狠手
查看>>
3·15曝光丨智能机器人一年拨打40亿个骚扰电话,6亿人信息已遭泄露!
查看>>
腾讯携手中科院国家天文台落地FAST 用云计算探索星辰大海
查看>>
随机森林算法4种实现方法对比测试:DolphinDB速度最快,XGBoost表现最差
查看>>
详解前端异步编程的六种方案
查看>>
红帽论坛北京站召开 设立亚太开放创新实验室
查看>>
苏宁11.11:如何基于异步化打造会员任务平台?
查看>>