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)
        });
    });

});

留言

本站已运行
© 2024 Jack  由 Hexo 驱动
复制成功