¿Cómo leo la primera línea no vacía de un archivo de texto, en javascript simple, posiblemente usando un nuevo FileReader ()?
Deseo obtener solo la primera línea no vacía, no todo el texto en el archivo (que podría ser enorme). Por "línea no vacía" me refiero a una línea que termina con \r\n y que contiene algunos caracteres que no están en blanco.
Uno de mis objetivos prácticos podría ser elegir la primera línea "buena" en un gran archivo CSV, para posiblemente obtener los "encabezados" (nombres de las variables del conjunto de datos).
El archivo que deseo leer ahora está localmente en mi disco duro, pero cuando el script esté listo, también me gustaría ponerlo en línea en mi dominio junto con el script para procesarlo.
¡Gracias!
Creo que quieres algo como esto:
fs = require('fs') fs.readFile('/testFile.csv', 'utf8', function (err,data) { if (err) { return console.log(err); } var firstLineRegEx = /^(.*)$/m var csvHeader = firstLineRegEx.exec(data) });Suponiendo que desea apegarse al JavaScript del lado del cliente/en el navegador (a diferencia de node.js), no hay realmente una manera de abrir un archivo y leerlo línea por línea; eso requeriría un nivel de acceso directo al sistema de archivos que simplemente no está disponible. Ciertamente puede procesarlo línea por línea, una vez que esté completamente cargado y lo haya dividido en líneas.
Si desea asegurarse de que solo cargue la primera línea en el navegador, necesitará un código del lado del servidor para eso. Node.js puede o no ser una buena opción, dependiendo de su sitio web existente.
Parece que la API de FileReader que mencionó está orientada a manejar archivos arbitrarios proporcionados por el usuario, lo que probablemente sea la dirección incorrecta si siempre tendrá el control de qué archivo cargar.
En realidad, tiene dos problemas distintos aquí: ¿cómo cargo solo una parte de un archivo en JS del lado del cliente y cómo puedo encontrar la línea de encabezado en una cadena que contiene datos con formato CSV? (Probablemente podría desglosar esto de manera diferente, pero de todos modos tiene varias partes).