为什么不覆盖两个不同的文件?

时间:2019-06-05 16:14:57

标签: node.js fs

问题出在哪里? 我无法以正确的顺序写入文件。

文件“ gestorFicheros.js”

// open log file
const fs = require('fs');

module.exports = {

    fichero: null,
    dia_actual: null,
    nombre: null,
    path: null,

    crearFichero: function(path, nombre){
        this.fichero = fs.createWriteStream(path + "/" + nombre, {flags: 'a'});
        this.nombre = nombre;
        this.path = path;

        this.fichero.on('error', function(e) { 
            console.log("Error:" + e);
            process.exit(1);
        });

        return(this);
    },

    escribe: function(datos){
        this.fichero.write(datos + "\r\n");
    }
};

文件“ test.js”

var ficheros = require('./gestorFicheros.js');

var a = ficheros.crearFichero("./registros", "todas.txt", {flags: 'a'});;
var b = ficheros.crearFichero("./registros", "no-repetidas.txt", {flags: 'a'});;

a.escribe("hola");
b.escribe("adios");
a.escribe("hola");

结果:

no-repetidas.txt

hola
adios
hola

todas.txt


预期结果:

no-repetidas.txt

adios

todas.txt

hola
hola

1 个答案:

答案 0 :(得分:1)

因为您正在做return(this);

您正在修改同一对象。不返回新实例,因此修改对象的最后一句话是设置文件名的那句话。