Necesito pasar un archivo de texto en la terminal y luego leer los datos, ¿cómo puedo hacer esto?
node server.js file.txt
¿Cómo paso en la ruta desde la terminal, cómo leo eso en el otro lado?
javascript
node.js
lujoso
fuente
fuente
Respuestas:
Querrá usar la
process.argv
matriz para acceder a los argumentos de la línea de comandos para obtener el nombre del archivo y el módulo FileSystem (fs) para leer el archivo. Por ejemplo:Para desglosarlo un poco, por lo
process.argv
general tendrá una longitud dos, el elemento cero es el intérprete del "nodo" y el primero es el script que el nodo está ejecutando actualmente, los elementos posteriores se pasaron en la línea de comandos. Una vez que haya extraído un nombre de archivo de argv, puede usar las funciones del sistema de archivos para leer el archivo y hacer lo que quiera con su contenido. El uso de muestra se vería así:[Editar] Como menciona @wtfcoder, usar el
fs.readFile()
método " " podría no ser la mejor idea porque almacenará en búfer todo el contenido del archivo antes de cederlo a la función de devolución de llamada. Este almacenamiento en búfer podría usar una gran cantidad de memoria pero, lo que es más importante, no aprovecha una de las características principales de node.js: E / S asíncrona y con eventos.La forma de "nodo" para procesar un archivo grande (o cualquier archivo, en realidad) sería usar
fs.read()
y procesar cada fragmento disponible tal como está disponible en el sistema operativo. Sin embargo, leer el archivo como tal requiere que realice su propio (posiblemente) análisis / procesamiento incremental del archivo y una cierta cantidad de almacenamiento en búfer podría ser inevitable.fuente
var lines = data.split(/\r?\n/);
, entonces la matriz "líneas" tendrá cada línea.Use fs con node.
fuente
En mi humilde opinión,
fs.readFile()
debería evitarse porque carga TODO el archivo en la memoria y no llamará a la devolución de llamada hasta que se haya leído todo el archivo.La forma más sencilla de leer un archivo de texto es leerlo línea por línea. Recomiendo un BufferedReader :
Para estructuras de datos complejas como .properties o archivos json, necesita usar un analizador (internamente también debe usar un lector en búfer).
fuente
fs.readFile()
ofs.readFileSync()
. Tiene que ser un archivo enorme para provocar una espera notable. Un archivo de configuración como JSON package.json es probable que sea menos de 1 kb, lo que sólo puedefs.readFile()
yJSON.parse()
él.Puede usar readstream y pipe para leer el archivo línea por línea sin leer todo el archivo en la memoria una vez.
fuente
Estoy publicando un ejemplo completo que finalmente pude hacer funcionar. Aquí estoy leyendo en un archivo
rooms/rooms.txt
de un script.rooms/rooms.js
fuente