Si vorrà utilizzare l'array process.argv
per accedere agli argomenti della riga di comando per ottenere il nome file e FileSystem module (fs) per leggere il file. Per esempio:
// Make sure we got a filename on the command line.
if (process.argv.length < 3) {
console.log('Usage: node ' + process.argv[1] + ' FILENAME');
process.exit(1);
}
// Read the file and print its contents.
var fs = require('fs')
, filename = process.argv[2];
fs.readFile(filename, 'utf8', function(err, data) {
if (err) throw err;
console.log('OK: ' + filename);
console.log(data)
});
Per rompere che verso il basso un po 'per voi process.argv
avrà solitamente la lunghezza di due, la voce zeroth essere l'interprete "nodo" e il primo è lo script che il nodo è attualmente in esecuzione, oggetti dopo che sono stati passato sulla riga di comando. Una volta che hai estratto un nome da argv, puoi usare le funzioni del filesystem per leggere il file e fare quello che vuoi con il suo contenuto. utilizzo del campione sarebbe simile a questa:
$ node ./cat.js file.txt
OK: file.txt
This is file.txt!
[Edit] Come @wtfcoder cita, utilizzando il metodo del "fs.readFile()
" potrebbe non essere la migliore idea perché sarà tamponare l'intero contenuto del file prima di cedere a la funzione di callback. Questo buffering potrebbe potenzialmente utilizzare molta memoria ma, cosa più importante, non sfrutta una delle funzionalità principali di node.js: I/O asincrono e event.
Il modo "nodo" per elaborare un file di grandi dimensioni (o qualsiasi file, in realtà) sarebbe utilizzare fs.read()
ed elaborare ogni blocco disponibile come è disponibile dal sistema operativo. Tuttavia, la lettura del file in quanto tale richiede di eseguire la propria (eventualmente) analisi/elaborazione incrementale del file e una certa quantità di buffering potrebbe essere inevitabile.
Se vi trovate l'aggiunta di ulteriori opzioni sulla riga di comando, è possibile usare [Optimist] (https://github.com/substack/node-optimist). – Jess
http://stackoverflow.com/questions/6156501/read-a-file-one-line-at-a-time-in-node-js?rq=1 mostra un altro modo di leggere un file di testo –