Node.js学习笔记(2、File System模块)
2014-01-29 14:53
399 查看
Node.js官方API
filesystem的缩写是fs,该模块提供本地文件的读写能力。
上面代码使用readFile方法读取文件。readFile方法的第一个参数是文件名,第二个参数是回调函数。这两个参数中间,还可以插入一个可选参数,表示文件的编码。
可用的文件编码包括“ascii”、“utf8”和“base64”。如果这个参数没有提供,默认是utf8。
如果想要同步读取文件,可以使用readFileSync方法。
写入文件要使用writeFile方法。
readdir方法用于读取目录,返回一个所包含的文件和子目录的数组。
Stream既可以读取数据,也可以写入数据。读写数据时,每读入(或写入)一段数据,就会触发一次data事件,全部读取(或写入)完毕,触发end事件。如果发生错误,则触发error事件。
fs模块的createReadStream方法用于新建读取数据流,createWriteStream方法用于新建写入数据流。使用这两个方法,可以做出一个用于文件复制的脚本copy.js。
上面代码非常容易理解,使用的时候直接提供源文件路径和目标文件路径,就可以了。
Streams对象都具有pipe方法,起到管道作用,将一个数据流输入另一个数据流。所以,上面代码可以重写成下面这样:
filesystem的缩写是fs,该模块提供本地文件的读写能力。
fs.readFile(filename, [options], callback)
filenameString
optionsObject
encodingString | Null default =
null
flagString default =
'r'
callbackFunction
var fs = require('fs'); fs.readFile('./zimin/demo.txt', function (err, logData) { if (err) throw err; console.log(data); });
上面代码使用readFile方法读取文件。readFile方法的第一个参数是文件名,第二个参数是回调函数。这两个参数中间,还可以插入一个可选参数,表示文件的编码。
fs.readFile('./zimin/demo.txt', 'utf8', function (err, logData) { // ... });
可用的文件编码包括“ascii”、“utf8”和“base64”。如果这个参数没有提供,默认是utf8。
如果想要同步读取文件,可以使用readFileSync方法。
fs.readFileSync(filename, [options])
var data = fs.readFileSync('./zimin/demo.json');
写入文件要使用writeFile方法。
fs.writeFile(filename, data, [options], callback)
filenameString
dataString | Buffer
optionsObject
encodingString | Null default =
'utf8'
modeNumber default =
438(aka
0666in Octal)
flagString default =
'w'
callbackFunction
fs.writeFile('./zimin/demo.txt', data, function (err) { if (err) { console.log(err.message); return; } console.log('Saved successfully.'); });
readdir方法用于读取目录,返回一个所包含的文件和子目录的数组。
fs.readdir('./zimin', function (err, files) { if (err) { console.log(err); return; } console.log(files); });
Stream模式
Stream是数据处理的一种形式,可以用来取代回调函数。举例来说,传统形式的文件处理,必须先将文件全部读入内存,然后调用回调函数,如果遇到大文件,整个过程将非常耗时。Stream则是将文件分成小块读入内存,每读入一次,都会触发相应的事件。只要监听这些事件,就能掌握进展,做出相应处理,这样就提高了性能。Node内部的很多IO处理都采用Stream,比如HTTP连接、文件读写、标准输入输出。Stream既可以读取数据,也可以写入数据。读写数据时,每读入(或写入)一段数据,就会触发一次data事件,全部读取(或写入)完毕,触发end事件。如果发生错误,则触发error事件。
fs模块的createReadStream方法用于新建读取数据流,createWriteStream方法用于新建写入数据流。使用这两个方法,可以做出一个用于文件复制的脚本copy.js。
// copy.js var fs = require('fs'); console.log(process.argv[2], '->', process.argv[3]); var readStream = fs.createReadStream(process.argv[2]); var writeStream = fs.createWriteStream(process.argv[3]); readStream.on('data', function (chunk) { writeStream.write(chunk); }); readStream.on('end', function () { writeStream.end(); }); readStream.on('error', function (err) { console.log("ERROR", err); }); writeStream.on('error', function (err) { console.log("ERROR", err); });
上面代码非常容易理解,使用的时候直接提供源文件路径和目标文件路径,就可以了。
node cp.js src.txt dest.txt
Streams对象都具有pipe方法,起到管道作用,将一个数据流输入另一个数据流。所以,上面代码可以重写成下面这样:
var fs = require('fs'); console.log(process.argv[2], '->', process.argv[3]); var readStream = fs.createReadStream(process.argv[2]); var writeStream = fs.createWriteStream(process.argv[3]); readStream.on('open', function () { readStream.pipe(writeStream); }); readStream.on('end', function () { writeStream.end(); });
相关文章推荐
- nodejs文件操作模块FS(File System)常用函数简明总结
- nodejs文件操作模块FS(File System)常用函数简明总结(转)
- nodejs(四)file System模块 解决Cross device link错误 EXDEV
- Node.js学习笔记(二):模块
- Node.js的文件系统模块(File System)
- node.js学习笔记(9)--mssql模块连接mysql数据库
- Node.js学习笔记(2)——新建简单的node.js模块
- Node.js中文件操作模块File System的详细介绍
- File System 文件系统模块
- Node.js文档关键模块: Timer, Buffer, Events, Stream, File System
- Node.js学习笔记(7、cluster模块)
- nodejs文件操作模块FS(File System)常用函数简明总结
- 北大青鸟ACCP5.0与ACCP4.0模块划分及各模块知识差异
- 在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序
- linux 下 C 编程和make的方法 (七、从项目组织化开发谈make操作模块)
- 生成一个支持的模块报告
- Python模块包中__init__.py文件的作用
- `cocos2dx非完整` 日志模块 增量更新
- HC-06蓝牙模块设置和使用方法
- 扩展 Dojo 模块