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

时间:2021-06-09 11:13:42

标签: javascript node.js fs

我的脚本遇到了与写入文本文件相关的问题。

逻辑流程如下: 我用 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);
}

1 个答案:

答案 0 :(得分:0)

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("");
相关问题