nodejs读取本地文件并重新写入
- 创建项目文件夹 nr,并进入该文件夹
mkdir nr
cd nr
- 用npm初始化一个node项目
npm init
初始化需要填写项目名称、版本号、描述等。如果想使用默认值,直接回车就可。
初始化后,nr 项目内容会生成
package.json
文件。- 按照我们需要用的
fs
、path
模块
npm add fs path
安装完后生成
node_modules
,里面有刚才按照的模块,以及这个两个模块依赖的相关插件。文章图片
文章图片
- 根目录下创建一个准备一个 json 文件,
nr_data.json
:
[{"create_time":"2013-06-06 00:34:20","upload_time":"2013-06-06 20:34:20","vid":{"Fmv_id":"274430","Fstatus":"1","Fvid":"u00138j4hcs"}}]
注意,数据必须是标准的 json 格式。
- 根目录下创建一个处理我们想要的数据的文件
nr_util.js
:
文章图片
- 跟目录下用node命令执行该文件,就能得到想要的数据格式。
node nr_util.js
node数据的读写可以用
readFile
& writeFile
或
createReadStream
& createWriteStream
它们的区别是 fs.readFile() 函数会缓冲整个文件。 若要最小化内存成本,则尽可能选择流式,使用 fs.createReadStream()。
nr_util.js
:readFile
& writeFile
方法读取:const fs = require('fs');
const path = require('path')const realFile = path.resolve(__dirname, './nr_data.json')
const wrideFile = path.resolve(__dirname, './nr_data_formated.json')fs.readFile(realFile , (err, buffer) => {
if (err) console.error(err)let d = buffer.toString() //将二进制的数据转换为字符串
d = JSON.parse(d) //将字符串转换为json对象let fomatted = d.map(e => e.vid)console.log("fomatted:", fomatted)// fs.writeFile 写入的 data 可以是字符串或 buffer
// const data = https://www.it610.com/article/new Uint8Array(Buffer.from(fomatted)) 或
const data = JSON.stringify(fomatted)fs.writeFile(wrideFile, data, (err) => {
if (err) console.error(err);
console.log('------ dwon -------');
})
})
【nodejs读取本地文件并重新写入】
createReadStream
& createWriteStream
方法读取:const fs = require('fs');
const path = require('path')var stream = fs.createReadStream(path.resolve(__dirname, './nr_data.json'))
var out = fs.createWriteStream(path.resolve(__dirname, './nr_data_formated.json'))stream.on('data', function (buffer) {
var d = buffer.toString() //将二进制的数据转换为字符串
d = JSON.parse(d) //将字符串转换为json对象let fomatted = d.map(e => e.vid)console.log("fomatted:", fomatted)//写入文件只认识字符串或者二进制数,所以把json对象转换成字符串重新写入json文件中
var data = https://www.it610.com/article/JSON.stringify(fomatted)out.write(data)
})out.on('open', function (fd) {
console.log('需要被写入的文件已打开');
})stream.on('end', function () {
//将操作系统缓存区中的数据全部写入文件
out.end(function () {
console.log('文件全部写入完毕');
console.log('共写入' + out.bytesWritten + '数据');
})
})
推荐阅读
- Flutter的ListView
- ExcelPackage读取写入
- springboot中.yml文件的值无法读取的问题及解决
- Xshell5|Xshell5 远程连接本地虚拟机Ubuntu16
- iOS|iOS 本地推送开发记录二
- Nginx进阶(1)——nginx本地代理配置访问node服务
- 带你了解NodeJS事件循环
- 怎么样提升您的业务在本地搜索可见性(可以通过提高本地SEO来实现)
- git|git 码云
- nodejs|nodejs 版本管理