浅谈Node.js 访问文件系统的几种写入方式
2018-03-05 17:56
651 查看
在node.js中,与文件的交互式非常重要的。下面介绍几种常用的文件写入方式。
简单文件的写入
例子:var fs = require('fs'); var config = { maxFiles: 20, maxConnections: 15, rootPath:"/webroot" }; var configTxt = JSON.stringify(config); var options = {encoding:'utf8', flag:'w'}; console.log(configTxt); fs.writeFile('config.txt', configTxt, options, function(err){ if(err){ console.log("Config Write Failed."); } else{ console.log("Config Saved."); } })
执行结果:
打开config.txt。可以看到文件已经储存在txt里面了。
同步文件写入
例子:var fs = require('fs'); var veggieTray = ['carrots', 'celery', 'olives']; fd = fs.openSync('veggie.txt', 'w'); while (veggieTray.length){ veggie = veggieTray.pop() + ""; var bytes = fs.writeSync(fd, veggie, null, null); console.log("Wrote %s %dbytes", veggie, bytes); } fs.closeSync(fd);
执行结果:
我们去看veggie.txt。里面保存了数据:
异步文件写入
例子:var fs = require('fs'); var fruitBowl = ['apple','orange','banana','grapes']; function writeFruit(fd){ if (fruitBowl.length){ var fruit = fruitBowl.pop() + ""; fs.write(fd, fruit, null, null, function(err, bytes){ if (err) { console.log("File Write Failed."); } else{ console.log("Wrote: %s %dbytes", fruit, bytes); writeFruit(fd); } }); } else { fs.close(fd); } } fs.open('fruit.txt', 'w', function(err,fd){ writeFruit(fd); })
执行结果:
打开fruit.txt。可以看到文件已经储存在txt里面了。
流式文件写入
例子:var fs = require('fs'); var grains = ['wheat','rice','oats']; var options = { encoding: 'utf8', flag:'w' }; var fileWriteStream = fs.createWriteStream("grains.txt", options); fileWriteStream.on("close", function(){ console.log("File Closed."); }); while (grains.length){ var data = grains.pop() + ""; fileWriteStream.write(data); console.log("Wrote: %s", data); } fileWriteStream.end();
执行结果:
我们去看grains.txt。里面已经保存了数据:
总结:将数据写入一个文件的最简单的方法是简单文件写入。
同步文件写入能在文件写入的的同步方法涉及在返回执行正在运行的线程之前,将数据写入文件,提供了能够在相同的代码段写入的多个优点,但是如果该文件控制住其他的线程,它就可能是一个缺点。
异步写入文件是在事件队列中放置一个写入请求,然后将控制返回给调用代码。除非事件循环提取出写入请求,并且运行它,否则实际的写的操作不会发生。在用一个文件上执行多个异步的写入请求时,必须要小心。因为除非你在执行下一个写入之前必须等待第一个写入回调函数的完成,否则你不能保证他的执行顺序。一般情况下,做到这一点的最简单的方法是把写操作嵌套到来自上一个写操作的回调函数中(上面有代码,可以仔细看。)
流式写入文件主要是为了向一个文件中写入大量的数据,包括把一个文件作为一个Writable流打开。
目前笔者只了解这几种写入的方式,欢迎大家进行讨论
相关文章推荐
- 浅谈Node.js 访问文件系统的几种读取方式
- 获取系统URL访问的前三名(通过Scala方式实现/通过Spark方式实现),Spark将URL访问日志进行分类并通过自定义Partitioner的方式将文件写入到不同分区上
- Node.js + MongoDB + AngularJS - 6 访问文件系统-1
- Node.js + MongoDB + AngularJS - 6 访问文件系统-2
- 浅谈Node.js:fs文件系统模块
- 以追加方式写入文件的几种方法
- ofstream写入文件的几种方式
- Tiny6410学习ing—(二)、嵌入式Linux应用开发—(2)、文件编辑(系统调用方式访问文件)—①
- SSHD方式访问windows的文件系统
- node.js之文件系统
- Node.js文件系统、路径的操作详解
- nodejs File System 文件系统操作函数分类
- 【js跨域】js实现跨域访问的几种方式
- OC基础加强篇(读出和写入文件的几种方式)
- Node.js学习(10)----文件系统fs
- Node.js web 服务器应对黑客攻击及确保文件系统的安全
- 用类似访问文件系统路径的方式访问Java类的内部成员
- Node.js学习(10)----文件系统fs
- (二)实验2-1-1 系统调用方式访问文件----权限问题
- 递归方式查找文件(不查找系统隐藏文件,并将文件名写入txt文件中)