Scrivere un programma che utilizzi una singola operazione sincrona per leggere il contenuto di un file e stampare a video il numero di linee del file letto.
Il percorso completo del file verrà passato come primo argomento sulla linea di comando.
Suggerimenti
Per lavorare con il filesystem avremo bisogno del modulo fs di node.js, che includiamo nel programma con l'istruzione
var mioFs = require('fs');
A questo punto date un'occhiata alla guida ufficiale del modulo fs, in particolare alla funzione mioFs.readSync(...)
La funzione è sincrona e ritorna un Buffer, che è il modo standard che ha node.js di rappresentare un insieme di dati, in qualsiasi formato: ascii, utf-8, binario.
Se i dati sono in un formato testuale, basterà invocare il metodo toString(...) per ottenere la stringa corrispondente.
Metodo veloce per contare le linee in una stringa
var stringa = "Quante linee\nci sono in\nquesta stringa?";
var linee = stringa.split('\n');
console.log(linee.length);
Una possibile soluzione
var fs = require('fs'),
contenutoFile = fs.readFileSync(process.argv[2]),
numeroLinee = contenutoFile.toString().split('\n').length;
console.log(numeroLinee);
In questo caso, readFileSync è una funzione sincrona, ritorna a sinistra un Buffer di dati, che deve essere convertito in stringa con il metodo toString().
Alternativamente si puo' specificare la codifica particolare con cui leggere il file ed omettere la trasformazione con il toString()
var fs = require('fs'),
contenutoFile = fs.readFileSync(process.argv[2], 'utf-8'),
numeroLinee = contenutoFile.split('\n').length;
console.log(numeroLinee);
Ho aggiornato su github il progetto, effettuate un git pull per aggiornare i sorgenti che avete in locale, come mostrato in questo post
Alla prox.
Ivan