C#:
Sprawdzanie, czy katalog istnieje

Jak to zrobić:

Używając System.IO

C# zapewnia przestrzeń nazw System.IO, która zawiera klasę Directory, oferującą bezpośredni sposób na sprawdzenie istnienia katalogu za pomocą metody Exists.

using System;
using System.IO;

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

        // Sprawdź, czy katalog istnieje
        bool directoryExists = Directory.Exists(directoryPath);

        // Wydrukuj wynik
        Console.WriteLine("Katalog istnieje: " + directoryExists);
    }
}

Przykładowy wynik:

Katalog istnieje: False

W przypadku, gdy katalog istnieje pod ścieżką C:\ExampleDirectory, wynik będzie True.

Używając System.IO.Abstractions do testów jednostkowych

Gdy chodzi o możliwość testowania jednostkowego kodu, szczególnie gdy wchodzi on w interakcję z systemem plików, pakiet System.IO.Abstractions jest popularnym wyborem. Pozwala on abstrahować i udawać operacje na systemie plików w testach. Oto jak można sprawdzić istnienie katalogu, korzystając z tego podejścia:

Najpierw upewnij się, że zainstalowałeś pakiet:

Install-Package System.IO.Abstractions

Następnie możesz wstrzyknąć IFileSystem do swojej klasy i używać go do sprawdzania, czy katalog istnieje, co ułatwia testowanie jednostkowe.

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:\ExampleDirectory";
        bool directoryExists = program.CheckDirectoryExists(directoryPath);

        Console.WriteLine("Katalog istnieje: " + directoryExists);
    }
}

Przykładowy wynik:

Katalog istnieje: False

To podejście rozdziela logikę aplikacji od bezpośredniego dostępu do systemu plików, czyniąc kod bardziej modułowym, testowalnym i łatwym do utrzymania.