Curso de Raku / Objetos, entrada/salida y excepciones / Entrada y salida

Borrar archivos y directorios

Igual que spurt y mkdir crean cosas en el disco, dos rutinas las eliminan.

La rutina unlink borra un archivo:

spurt 'temp.txt', 'scratch data';
say 'temp.txt'.IO.e; # True

unlink 'temp.txt';
say 'temp.txt'.IO.e; # False

unlink borra el archivo indicado. Como las demás rutinas del sistema de archivos, también tiene forma de método sobre un objeto de ruta: 'temp.txt'.IO.unlink.

El borrado es inmediato y definitivo: no hay ninguna papelera de la que recuperar nada. Fíjate en que, una vez desaparecido el archivo, hay que comprobarlo con .e (existencia) y no con .f, porque las comprobaciones de tipo .f y .d lanzan una excepción cuando la ruta no está.

La rutina rmdir elimina un directorio, pero solo si está vacío:

mkdir 'reports';
rmdir 'reports';
say 'reports'.IO.e; # False

Si el directorio todavía contiene algo, rmdir no elimina nada y lo deja en su sitio. Así que, para borrar un directorio que contiene archivos, primero lo vacías y después lo eliminas:

mkdir 'reports';
spurt 'reports/jan.txt', 'January';
spurt 'reports/feb.txt', 'February';

.unlink for 'reports'.IO.dir;   # delete every entry
rmdir 'reports';                # now the directory is empty
say 'reports'.IO.e;             # False

'reports'.IO.dir lista las entradas del directorio (lo vimos en el tema anterior), y llamar a .unlink sobre cada una las elimina. Una vez vacío el directorio, rmdir puede llevárselo. (Este bucle plano da por sentado que el directorio solo contiene archivos; un árbol con subdirectorios anidados tendría que entrar antes en ellos de forma recursiva.)

Práctica

Resuelve 1 cuestionario sobre el contenido de este tema.

Ejercicios

Esta sección contiene 2 ejercicios. Mira todos los temas de esta sección antes de empezar los ejercicios.

  1. Borre un archivo
  2. Vacíe un directorio

Solución: ¿Archivo o directorio?   |   Borre un archivo