OOP Course
Сьогодні

Підрозділ 18.1

Класи Path, File та Directory

18.1. Класи Path, File та Directory Файлова система — один із найважливіших механізмів збереження даних у будь якому застосунку. Медична інформаційна система зберігає картки пацієнтів, результати аналізів, знім

18.1. Класи Path, File та Directory

Файлова система — один із найважливіших механізмів збереження даних у будь-якому застосунку. Медична інформаційна система зберігає картки пацієнтів, результати аналізів, знімки, архіви журналів — усе це файли та теки на диску. C# надає потужний і зручний інструментарій для роботи з файловою системою через простір імен System.IO. Три основні статичні класи — Path, File та Directory — покривають переважну більшість сценаріїв: від складання шляхів і перевірки існування ресурсів до читання, запису та переміщення файлів.

Клас Path — маніпуляції з рядками шляхів

Path — статичний клас, що надає методи для роботи з рядковим поданням шляхів файлової системи. Важлива особливість: Path не звертається до диску взагалі — він виключно обробляє рядки. Це робить його операції миттєвими і безпечними щодо винятків файлової системи.

Метод Path.Combine дозволяє об'єднувати частини шляху незалежно від операційної системи. Використання рядкової конкатенації (dir + "\\" + file) — поширена помилка: вона ламається на Linux/macOS, де роздільник — /. Path.Combine завжди підставляє правильний роздільник:

Path.GetFullPath перетворює відносний шлях на абсолютний — корисно при роботі з конфігурацією:

Статичні класи файлової системи та анатомія шляху

Клас Directory — робота з теками

Directory — статичний клас для операцій над директоріями файлової системи: перевірки існування, створення, видалення, перебирання вмісту.

Перевірка існування та створення

Directory.CreateDirectory безпечно ігнорує виклик, якщо тека вже існує — не кидає виняток при повторному створенні. Це дозволяє гарантувати існування потрібної структури теок перед записом файлів.

Перебирання вмісту теки

GetFiles vs EnumerateFiles

GetFiles повертає весь масив одразу — усі шляхи зчитуються у пам'ять перед поверненням. EnumerateFiles повертає IEnumerable<string> з ліниво обчисленим результатом — елементи надходять по одному в міру обходу. Для великих теок з тисячами файлів EnumerateFiles ефективніший — перший файл доступний без очікування завершення всього обходу:

Переміщення та видалення теки

Без параметра recursive: true виклик Delete на непорожній теці кине IOException.

Клас File — робота з файлами

File — статичний клас для атомарних операцій над файлами. «Атомарних» означає: кожен метод сам відкриває файл, виконує операцію і закриває. Це зручно для простих сценаріїв, де не потрібен потоковий доступ.

Запис та читання тексту

Дозапис у кінець файлу

Перевірка існування, копіювання, переміщення, видалення

Читання/запис масиву байтів

Для бінарних даних File.ReadAllBytes і File.WriteAllBytes зчитують та записують весь файл як byte[]:

Path, File та Directory разом: реальний сценарій

Об'єднаємо всі три класи у типовому сценарії медичної системи — організація архіву результатів аналізів:

Анатомія шляху файлової системи

Розроблено Tomka Yurii · © 2026 ·