Node.js内置的文件系统模块(fs)
来源:互联网 发布:sd2100编程说明 编辑:程序博客网 时间:2024/05/21 15:06
异步读取文件
按照js的标准,异步读取一个文本文件的格式如下:
'use strict'const fs = require('fs')fs.readFile('test.txt', 'utf-8', function(err, data){ if(err){ cconsole.log(err) }else{ console.log(data) }})
请注意,test.txt文件必须在当前目录下,且文件编码必须为utf-8
如果我们读取的文件不是文本文件,而是二进制文件,怎么办呢?
下面演示如何读取一个图片文件:
'use strict'const fs = rquire('fs')fs.readFile('test.png', function(err, data){ if(err){ console.log(err) }else{ console.log(data) console.log(data.length + 'bayes') }})
当读取二进制文件时,不传入文件编码时,回调函数的data参数将返回一个buffer
对象。在Node.js中,buffer
对象可以和String
做转换,例如,把一个buffer
转化成String
:
var text = data.toString('utf-8')
把String
转化为Buffer
var buf = new Buffer('text', 'uft-8')
同步读取文件
fs
模块也提供相应的同步读取文件函数。与异步相比,多了一个Sync后缀,并且不接受回调函数,函数直接返回结果。
用fs
模块同步读取文件如下:
'use strict'const fs = require('fs')var data = fs.readFileSync('test'.txt, 'utf-8')
如果同步读取文件失败,则需要使用try...catch
捕获该错误。
try{ var data = fs.readFileSync('test.txt', 'utf-8')}catch(err){ // 出错了}
写文件
例如:
'use strict'const fs = require(''fs)fs.writeFile('test.txt', data, function(err){ if(err){ console.log(err) }else{ console.log('ok') }})
writeFile
方法的参数依次是文件名,数据和回调函数。如果传入的数据类型是String
,默认按UTF-8
编码写入文件,如果传入的数据类型是Buffer
,则写入的是二进制文件。回调函数只关心成功与否,因为需要一个err
参数。
和 readFile
类似,writeFile
也有一个同步的方法,叫writeFileSync
,例如:
const data = 'Hello,Node.js'writeFileSync('test.txt', data)
stat
如果我们要获取文件的大小,创建时间等信息,可以使用fs.stat(),它返回的是一个Stat对象,能告诉我们文件或者目录的详细信息。
'use strict'const fs = require('fs')fs.stat('test.txt', function(err, stat){ if(err){ console.log(err) } else { // 是否是文件 console.log('isFile:' + stat.isFile()) // 是否是目录 console.log('isDir' + stat.isDirectory()) if(stat.isFile()){ // 文件大小 console.log('size:' + stat.size) // 创建时间 console.log('crateTime:' + stat.birthtime) // 修改时间 console.log('modifiedTime:' + stat.mtime) } }})
运行结果如下:
isFile: trueisDirectory: falsesize: 181crateTime: Fri Dec 11 2015 09:43:41 GMT+0800 (CST)modifiedTime: Fri Dec 11 2015 12:09:00 GMT+0800 (CST)
stat也有一个同步的方法,这里就不多做叙述了。
由于Node.js环境执行的JavaScript代码是服务器代码,所以,绝大多数需要在服务器执行复杂的逻辑代码,所以必须使用异步代码,否则,同步代码在执行时,服务器停止响应,因为JavaScript只有一个执行线程。
- Node.js内置的文件系统模块(fs)
- Node.js学习之内置模块fs
- node.js之基本文件系统模块fs
- 【Node文件系统fs模块】
- Node.js文件系统fs
- Node.js 文件系统 fs
- Node.js基本模块 fs(是文件系统模块)
- Node.js fs 模块
- Node.js中的文件系统(FS)
- node.js中的fs模块
- Node.js 文件模块(fs)模块介绍
- Node.js学习(10)----文件系统fs
- Node.Js fs模块文件操作(一)
- Node.Js fs模块操作文件(二)
- Node.Js fs模块文件操作(三)
- Node.js的文件系统模块(File System)
- Node.Js API 解析--FS模块
- node.js fs,http 模块用法
- 数字逻辑课程设计电子钟
- css 水平/竖直/水平竖直方法大全
- Hadoop2.6集群安装配置教程
- 在CentOS 6.8 x86_64上利用devtoolset搭建GCC 4.9.2和5.3.1开发环境
- python-random模块
- Node.js内置的文件系统模块(fs)
- Browser-sync 一款前端开发中用于自动刷新页面的工具
- [PAT甲级]1003. Emergency (25)(求城市间最短路径和最大救援队数目)
- 5 实现
- 树状数组区间修改区间查询
- HDU
- 爬虫系列-雪球网选股策略爬取程序1.0
- RxSwift 样例一 imagePicker
- Logistic回归以及LR与SVM异同