Manipulando arquivos com NodeJS

Estes exemplos foram feitos a partir dos exercícios disponíveis no nodeschool, pelo workshopper learnyounode.

Lendo um arquivo de forma síncrona

A ideia aqui era fazer um programa em node que pudesse contar o número de linhas em um arquivo cujo caminho foi fornecido via parâmetro.

// countLines.js
var fs = require('fs');
var filename = process.argv[2]; // parametro
var buffer = fs.readFileSync(filename);
var str = buffer.toString();
console.log(str.split('\n').length - 1);

Lendo arquivo de forma assíncrona

// countLinesAsync.js
var fs = require('fs');
var filename = process.argv[2];
fs.readFile(filename, function(err, data) {
    var str = data.toString();
    console.log(str.split('\n').length - 1);
});

Listando arquivos de um diretório

O programinha abaixo funciona mais ou menos como o comando ls do linux. O primeiro parâmetro é o diretório que se quer listar arquivos e o segundo parâmetro é a extensão dos arquivos que serão listados.

// ls.js
var fs = require('js');
var path = require('path');
var dirPath = process.argv[2];
var ext = '.' + process.argv[3];

fs.readdir(dirPath, function (err, list) {
    if (err) {
        return;
    }
    var files = list.filter(function(f) {
        return path.extname(f) === ext;
    });
    console.log(files.join('\n'));
});

Referências

  • http://nodeschool.io/#workshopper-list
  • https://github.com/rvagg/learnyounode