Comprobando si un directorio existe

C#:
Comprobando si un directorio existe

Cómo hacerlo:

Usando System.IO

C# proporciona el espacio de nombres System.IO, que contiene la clase Directory, ofreciendo una manera directa de verificar la existencia de un directorio a través del método Exists.

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string directoryPath = @"C:\DirectorioEjemplo";

        // Verificar si el directorio existe
        bool directoryExists = Directory.Exists(directoryPath);

        // Imprimir el resultado
        Console.WriteLine("El directorio existe: " + directoryExists);
    }
}

Salida de muestra:

El directorio existe: Falso

En caso de que el directorio sí exista en la ruta C:\DirectorioEjemplo, la salida será Verdadero.

Usando System.IO.Abstractions para pruebas unitarias

Cuando se trata de hacer que tu código sea testeable en unidades, especialmente cuando interactúa con el sistema de archivos, el paquete System.IO.Abstractions es una elección popular. Permite abstraer y simular operaciones del sistema de archivos en tus pruebas. Así es como podrías verificar la existencia de un directorio usando este enfoque:

Primero, asegúrate de haber instalado el paquete:

Install-Package System.IO.Abstractions

Luego, puedes inyectar un IFileSystem en tu clase y usarlo para verificar si un directorio existe, lo que permite facilitar las pruebas unitarias.

using System;
using System.IO.Abstractions;

class Program
{
    private readonly IFileSystem _fileSystem;

    public Program(IFileSystem fileSystem)
    {
        _fileSystem = fileSystem;
    }

    public bool CheckDirectoryExists(string directoryPath)
    {
        return _fileSystem.Directory.Exists(directoryPath);
    }

    static void Main()
    {
        var fileSystem = new FileSystem();
        var program = new Program(fileSystem);

        string directoryPath = @"C:\DirectorioEjemplo";
        bool directoryExists = program.CheckDirectoryExists(directoryPath);

        Console.WriteLine("El directorio existe: " + directoryExists);
    }
}

Salida de muestra:

El directorio existe: Falso

Este enfoque desacopla la lógica de tu aplicación del acceso directo al sistema de archivos, haciendo que tu código sea más modular, testeable y mantenible.