NodeJS 读写文件
2022/12/23
共 311 字
约 1 分钟
归档: 技术
在前端的路上越走越远。
搁以前,遇到需要批量处理文本时,都是写一段 Java,无他,因为熟悉。一些简单的文本操作,可以直接用开发者工具,打印出来。但现实中,往往需要处理较大的文本,打印后复制粘贴,不实际。而有了 NodeJS 后,几乎后端能做的,他都能做到,自然包括读写文件。
处理 JSON
const fs = require('fs')
const path = require('path')
let dir = path.join(__dirname, 'test.json')
let cleanDir = path.join(__dirname, 'result.json')
fs.readFile(dir, 'utf8', (err, data) => {
if (err) {
console.log(err)
return
}
let arr = JSON.parse(data)
let cleanArr = []
arr.forEach(function (item) {
cleanArr.push({name: item.name, url: item.url})
})
cleanArr = JSON.stringify(cleanArr)//将数组转成json格式
fs.writeFile(cleanDir, cleanArr, 'utf8', (err) => {
console.log('写入成功', err)
})
})
按行处理文本
const fs = require('fs')
const readline = require('readline');
const lines = [];
const results = [];
const rl = readline.createInterface({
input: fs.createReadStream('ch3.txt', { encoding: 'utf-8' }),
crlfDelay: Infinity
});
rl.on('line', (line) => {
lines.push(line);
});
rl.on('close', (line) => {
lines.forEach(function (item) {
item = item.replaceAll('|', ' ').replace('(', '\t').replace(')', '').replace(' 55000', '')
results.push(item)
})
fs.open('jack.dict.yaml', 'w', (err, fd) => {
if (err) throw err;
results.forEach((num) => {
fs.write(fd, num.toString() + '\n', (err) => {
if (err) throw err;
});
});
fs.close(fd, (err) => {
if (err) console.log(err)
});
});
});
留言