ūü•á Filesystem.

  1. Creamos nuestro app.js.

  2. Inicializamos el modulo fs (filesystem).

    // Llamar modulo fs.
    var fs = require('fs');
    
    // Llamar de manera sincrona.
    var texto = fs.readFileSync(__dirname + '/texto.txt', 'utf8');
    
    // Imprimir el texto
    console.log(texto);
    

    En el ejemplo, estamos viendo como sin utilizar un callback podemos ejecutar línea por línea nuestro código. Esto debido a que la funcion readFileSync es sincrona, espera hasta que el buffer este lleno y mientras detiene su valor. Sin embargo esto no es el comportamiento en muchas aplicaciones, pues puede ser que multiples usuarios esten usando la misma aplicación leyendo el mismo archivo y al mismo tiempo.

  3. Vamos a cambiar un poco el código, para hacerlo asincrono.

    // Llamar modulo fs.
    var fs = require('fs');
    
    // Llamar de manera sincrona.
    fs.readFile(__dirname + '/texto.txt', 'utf8', function(error, datos){
    
        // Imprimir el texto
        console.log(datos);
    
    });
    
    // Imprimir fin
    console.log('Fin!');
    

    Hay que tomar en cuenta que muchas de las funciones que actuan como callbacks son Error-First Callback, es decir, que el primer parametro que envian es el objeto error, si este error no existe regrean null. Este es el caso de la función callback de readFile.

    La función readfile es asincrona, cuando la invocamos el callback se disparará cuando termine de leer el archivo, pero el código continua su ejecución, es decir que el mensaje Fin! se ejecutará antes que console.log(datos).

    Los callbacks se disparan solo cuando se completa su ejecución, y las funciones asincronas no bloquean la continuación de la ejecución del código.

Trabajando con buffers. Chunk por chunk.
comments powered by Disqus