Meu Primeiro I/O!

Antonio Milesi Bastos
devexpert
Published in
2 min readMar 16, 2017

--

Continuando nossa série “Aprendendo Node.js para a mais plena vitória!” vamos ao terceiro exercício do workshop.

Quando terminar esse desafio você será capaz de ler um arquivo e manipular o seu conteúdo.

MEU PRIMEIRO I/O! (Exercício 3 de 13)

Escreva um programa que usa uma única operação síncrona de sistema de arquivos (filesystem) para ler e imprimir o número de novas linhas (\n) que ele contém no console (stdout), algo similar à executar cat file | wc -l.

Todo o caminho até o arquivo à ser lido será fornecido como primeiro argumento da linha de comando.

Click aqui para acessar a gravação do terminal!

DICAS

Para realizar uma operação no sistema de arquivos (filesystem), você vai precisar do módulo fs da library principal do Node. Para carregar esse tipo de módulo ou qualquer outro módulo "global", use o seguinte código:

var fs = require('fs')

Agora você tem o módulo fs completo disponível em uma variável chamada fs.

Todos os métodos de sistema de arquivos síncronos (ou bloqueantes) no módulo fs terminam com 'Sync'. Para ler um arquivo, você vai precisar usar fs.readFileSync('caminho/do/arquivo'). Esse método irá retornar um objeto Buffer contendo o conteúdo completo do arquivo.

A documentação do módulo fs pode ser encontrada apontando seu navegador para esse endereço: https://nodejs.org/api/fs.html

Objetos Buffer são a maneira do Node de representar eficientemente arrays arbitrários de dados, sejam eles ascii, binários ou quaisquer outros formatos. Objetos Buffer podem ser convertidos em strings invocando o método toString() neles. Por exemplo: var str = buf.toString().

A documentação sobre Buffers pode ser encontrada apontando seu navegador para esse endereço: https://nodejs.org/api/buffer.html

Se você estiver procurando por uma maneira fácil de contar o número de novas linhas em uma string, lembre-se que uma String JavaScript pode ser dividida usando .split() em um array de substrings e que '\n' pode ser usado como um delimitador. Note que o arquivo de teste não possui um caractere de nova linha ('\n') no fim da última linha, então ao usar esse método você vai acabar tendo um array com um elemento a mais do que o número de novas linhas.

No próximo post vamos ao “Meu Primeiro I/O Assíncrono!” e aí começaremos a ver a maneira Node.JS de fazer as coisas: assíncrona. Se você gostou ou tem uma sugestão de como deixar essa série melhor, deixe um comentário aqui em baixo. Grande abraço!

--

--

I have devoted my journey to uncover better ways of develop software by doing it and helping others to do so.