fs.writeFileSync 方法写入文本文件错误

fs.writeFileSync method writing wrong to a text file

我的脚本在写入文本文件时遇到问题。

逻辑流程如下: 我用 fs.readFileSync 读取了整个未格式化的文本文件,并将所有读取的内容传递给字符串类型的变量。之后,我使用 .split 将此文本分成几个部分,并将断开的文本的每个部分保存在一个数组中。之后我使用for循环遍历这个数组并写入另一个文本文件,但是问题来了,我不知道循环中的信息流是否太快,有时会在一个文本文件中写入这个文本文件凌乱的方式,不尊重正在读取的数组的顺序。

代码如下:

try{
    const data = fs.readFileSync('test_zpl.txt', 'utf8')
    txt = data.replace(/\s/g,"");
} catch (err) {
    console.log(err);
}

ArrayZPL = txt.split("+");

//Writting
for(i=0;i<ArrayZPL.length;i++){

    try{
        fs.writeFileSync('zpl_text.txt', ArrayZPL[i]);
    } catch (err){
        console.log(err);
    }

}

//Reading
try{
    const data = fs.readFileSync('zpl_text.txt', 'utf8')
    zpl = data;
} catch (err) {
    console.log(err);
}

fs.writeFileSync 覆盖作为其第一个参数传递的文件路径。为了演示 运行 下面在节点中的代码,在控制台的工作目录中键入 test.txt 的内容并重复:

const fs = require("fs");
const path = require("path");
const filepath = path.resolve("./test.txt");

let string = "random-" + Math.random();
console.log( "writing %s to %s", string, filepath);
fs.writeFileSync( filepath, string);

要分块写入文件,您可以创建可写流并使用异步代码分块写入数组条目。要保持同步代码,加入数组条目并写入结果:

fs.writeFileSync('zpl_text.txt', ArrayZPL.join("");