JavaScript:
Lectura de un archivo de texto

Cómo hacerlo:

JavaScript, especialmente en Node.js, hace que leer archivos de texto sea un juego de niños. Aquí hay un ejemplo sencillo usando fs, el módulo de sistema de archivos incorporado en Node.js:

const fs = require('fs');

// Sincrono
const contenido = fs.readFileSync('ejemplo.txt', 'utf-8');
console.log(contenido);

// Asincrono
fs.readFile('ejemplo.txt', 'utf-8', (err, contenido) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(contenido);
});

Output sincrono:

Hola, esto es un texto de ejemplo!

Output asincrono (será el mismo, pero dependerá de cuándo termine la operación asincrónica):

Hola, esto es un texto de ejemplo!

Deep Dive

Antiguamente, leer un archivo podría significar una operación compleja que requería manejar buffers y entender cómo el sistema operativo manejaba los archivos. Hoy, Node.js abstrae esas complejidades con su módulo fs.

Alternativas existen, incluyendo el uso de fs.promises para trabajar con promesas nativas en vez de callbacks, lo que puede resultar en un código más claro y moderno:

const fs = require('fs').promises;

async function leerArchivo() {
  try {
    const contenido = await fs.readFile('ejemplo.txt', 'utf-8');
    console.log(contenido);
  } catch (err) {
    console.error(err);
  }
}

leerArchivo();

En el navegador, las cosas funcionan diferente por cuestiones de seguridad y privacidad. Sin embargo, podemos leer archivos desde la entrada de un usuario usando FileReader:

const input = document.createElement('input');
input.type = 'file';

input.onchange = e => {
  const file = e.target.files[0];
  const reader = new FileReader();

  reader.onload = () => {
    console.log(reader.result);
  };
  
  reader.readAsText(file);
};

document.body.appendChild(input);

En este caso, FileReader se encarga de procesar el archivo seleccionado y podemos manejar su contenido una vez que se dispara el evento onload.

Ver También