UNPKG

learnyounode

Version:

Learn You The Node.js For Much Win! An intro to Node.js via a set of self-guided workshops.

27 lines (16 loc) 2.07 kB
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. ---------------------------------------------------------------------- ## DICAS Para realizar uma operação de 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: ```js const 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: {rootdir:/docs-nodejs/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: `const str = buf.toString()`. A documentação sobre `Buffer`s pode ser encontrada apontando seu navegador para esse endereço: {rootdir:/docs-nodejs/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.