Leyendo y escribiendo archivos con Deno

Ariel Alvarado | Junio 10, 2020


Algo que se necesita en la mayoría de aplicaciones (o sistemas) es leer y escribir archivos.

Leer un archivo

- Opción uno (sin utilizar librerias extras)

Leemos el archivo y copiamos el contenido a la salida estándar del sistema:

copy-file-1.ts
// abrir el archivo para lectura, read: true
const denoFile = await Deno.open("./lorem-ipsum.txt", { read: true });

// copiar el contenido del archivo a la salida estandar del sistema
await Deno.copy(denoFile, Deno.stdout);

// cerramos el archivo abierto
denoFile.close();

Hacemos correr el script asegurandonos de darle permiso al archivo que se quiere leer.

$ deno run --allow-read read-file-1.ts

La salida (dependiendo del archivo leido) sería:

Salida de lectura de archivo

- Opción dos (Utilizando librerias extras)

Leemos el archivos y lo imprimimos, mucho más simple.

read-file-2.ts
// importamos la libreria para leer archivos de Deno y devolverlos como cadena
import { readFileStr } from "https://deno.land/std/fs/read_file_str.ts";

// leemos el archivo
const content = await readFileStr("./lorem-ipsum.txt");

// imprimimos el contenido a la consola
console.log(content);

Para hacer correr el script ejecutamos:

$ deno run --allow-read read-file-2.ts

La salida (dependiendo del archivo leido) sería:

Salida de lectura de archivo

Escribir un archivo

- Opción uno (sin utilizar librerias extras)

Acá se pone un poco "extraño", abrimos el archivo para lectura y escribimos el contenido al archivo (el contenido debe ser un buffer).

write-file-1.ts
// abrir el archivo para escritura
const file = await Deno.open("./archivo.txt", { write: true });

// convertir cadena a buffer (Uint8Array)
const contentBytes = new TextEncoder().encode("Pude escribir a un archivo!!!");

// escribir contenido al archivo
await Deno.writeAll(file, contentBytes);

// cerramos el archivo abierto
file.close();

Ejecutamos el archivo y se escribirà el contenido:

$ deno run --allow-write write-file-1.ts

El ejemplo da error en caso de que el archivo no exista, para crear el archivo agregar la opción create al abrirlo

write-file-1.ts
// abrir el archivo para escritura, crearlo si no existe
const file = await Deno.open("./archivo.txt", { write: true, create: true });
...

- Opción dos (utilizando librerias extras)

Ahora escribiremos el archivo de una manera mucho más sencilla:

write-file-2.ts
// importamos la libreria para escribir archivos
import { writeFileStr } from "https://deno.land/std/fs/write_file_str.ts";

// escribimos el archivo
const content = await writeFileStr(
  "./crear-archivo-2.txt",
  "Contenido del archivo 2"
);

Para ejecutar el script ejecutamos:

$ deno run --allow-write write-file-2.ts

Es importante tomar en cuenta que el contenido del archivo es reemplazado (por lo tanto es peligroso ya que podrías sobreescribir un archivo necesario por error), además, el archivo se crea si no existe.

Y eso es todo por hoy, keep coding!!!