Робота з файловою системою розуміє під собою обробку як папок (каталогів), так і зареєстрованих в них файлах. Відповідні класи визначені у просторі імен System.IO.
У табл. 6.1 перелічені класи, що використовуються для роботи з файловою системою.
Таблиця 6.1. Класи для роботи з файловою системою
|
|
Directory
| Містить статичні методи для створення та використання папок. Ці методи можна викликати без створення відповідних об’єктів
|
DirectoryInfo
| Містить властивості і методи для створення та використання папок. Доступ до членів класу можливий тільки після створення його екземпляру
|
File
| Містить статичні методи для роботи з файлами. Ці методи можна викликати без створення об’єкта
|
FileInfo
| Містить методи для роботи з класами, які стають доступними після створення об’єкта цього класу
|
Path
| Допоміжний клас для роботи з маршрутами доступу (шляхами)
|
Статичні класи Directory та File не потребують відповідних об’єктів. Однак при зверненні до методів запускається система перевірки безпеки доступу до коду (Code Access System, CAS), що уповільнює роботу методів. У зв’язку з цим при обробці декількох папок (файлів) зручніше використовувати класи DirectoryInfo та FileInfo.
Класи для роботи з потоками даних також визначені у просторі імен System.IO і представлені в табл. 6.2.
Таблиця 6.2. Класи для роботи з потоками даних
Клас
| Призначені
|
MemoryStream
| Сховище даних в оперативній пам’яті
|
NetworkStream
| Дозволяє передавати потік по мережевому з’єднанні
|
FileStream
| Представляє базовий клас потоку для запису та читання файлів
|
BinaryReader
| Зчитує дані з двійкових файлів
|
BinaryWriter
| Записує дані в двійковий файл
|
StreamReader
| Зчитує дані з текстових файлів
|
StreamWriter
| Записує дані в текстовий файл
|
Перед тим як використовувати один із вищевказаних класів, необхідно обов’язково підключити бібліотеку System.IO, для чого потрібно в коді програми додати такий рядок:
using System.IO;
Для роботи з текстовими файлами необхідно створити об’єкт типу FileStream і проініціалізувати його відкритим файлом. Оскільки всі методи класу File статичні (не прив’язані до об’єктів), то немає необхідності створювати екземпляр класу File. Ось типовий приклад ініціалізації об'єкта FileStream:
FileStream myStream = File.Open("С:\MyFile.rxt", FileMode.Open, FileAccess.Read);
При створенні об’єкта FileStream йому передається ім’я файлу і два параметри: FileMode, який визначає спосіб створення потоку, та FileAccess, який регулює доступ потоку до даних. У табл. 6.3 та 6.4 указано допустимі значення цих параметрів.
Таблица 6.3.Значення параметра FileMode
Значення
| Опис
|
Append
| Додає записи в існуючий файл або створює новий. Потребує, щоб параметр FileMode мав значенння Write
|
Create
| Створює новий файл або переписує існуючий. Потребує, щоб параметр FileMode мав значення Write
|
CreateNew
| Створює новий файл, а якщо він вже існує, виникає виключення. Потребує, щоб параметр FileMode мав значення Write
|
Open
| Відкриває існуючий файл. Якшо файла немає, виникає виключення
|
OpenOrCreate
| Відкриває існуючий або створює новий файл, якщо він ще не створений
|
Truncate
| Відкриває існуючий файл та робить його розмір рівним нулю
|
Таблица 6.4.Значення параметра FileAccess
Значення
| Опис
|
Read
| Потік може читати дані
|
ReadWrite
| Потік може читати і записувати дані
|
Write
| Потік може записувати дані
|
Платформа Windows Forms має об’єкт OpenFileDialog, який дозволяє виводити на екран стандартне діалогове вікно Windows. Розглянемо, як можна використовувати елемент керування OpenFileDialog у формах Windows шляхом додавання даного об’єкту в Visual Studio, а також відкриття діалогу при натисканні на кнопку і читання в зазначений файл. По-перше, для початку роботи з компонентом OpenFileDialog, необхідно відкрити «Панель элементов», розділ «Диалоговые окна» та обрати елемент OpenFileDialog і двічі клікнути по ньому. Зауважимо, що не можна змінити візуально OpenFileDialog так, як і інші об’єкти Windows Forms у конструкторі. Замість можна змінювати тільки його властивості в панелі властивостей. Для зміни цих властивостей необхідно обрати відповідний об’єкт, наприклад openFileDialog1, перейти на іконку в панелі задач у нижній частині вікна Visual Studio. Розглянемо, як можна відкрити OpenFileDialog. Діалогове вікно не відкриється автоматично, і воно повинно бути використано в призначеному для користувача коді. Для відображення діалогу відкриття файлів, необхідно використати метод ShowDialog:
openFileDialog1.ShowDialog();
Основні властивості та методи OpenFileDialog відображені у таблицях 6.5 та 6.6.
Таблиця 6.5. ВластивостіOpenFileDialog
Назва
| Опис
|
FileName
| Повертає чи задає рядок, що містить назву файла, який вибраний у діалоговому вікні
|
FileNames
| Повертає імена всіх обраних файлів у діалоговому вікні
|
Filter
| Повертає або задає поточний рядок фільтра імен файлів, який визначає варіанти, доступні в полі "Зберегти як тип файлу" або "Файли типу"
|
InitialDirectory
| Повертає або задає початкову папку, відображену діалоговим вікном файлу
|
Multiselect
| Повертає або задає значення, яке вказує, чи можна в діалоговому вікні вибирати кілька файлів
|
SafeFileName
| Повертає ім'я і розширення файлу, обраного в діалоговому вікні. Файл не включає відомості про шлях
|
ShowReadOnly
| Повертає або задає значення, яке вказує, чи є в діалоговому вікні прапорець "доступно тільки для читання"
|
Таблиця 6.6. Методи OpenFileDialog
Dispose
| Звільняє всі ресурси, які використовуються об'єктом Component
|
OnFileOk
| Викликає подію FileOk
|
OpenFile
| Відкриває вибраний користувачем файл у режимі "тільки читання". Файл задається властивістю FileName.
|
Reset
| Відновлює значення всіх властивостей за замовчуванням.
|
RunDialog
| Інфраструктура. Вказує загальне діалогове вікно.
|
ShowDialog
| Запускає загальне діалогове вікно із заданим за умовчанням власником.
|
Розглянемо на прикладі роботу з об’єктом OpenFileDialog. Нехай необхідно відкрити текстовий файл за допомогою діалогу відкриття файлів та зчитати його зміст у TextBox.
// показуєм діалог відкриття файлів
openFileDialog1.ShowDialog();
// отрумуємо назву файла
string fileName = openFileDialog1.FileName;
//відкриваєм файл для читання та асоціюєм його з потоком
FileStream stream = File.Open(fileName, FileMode.Open, FileAccess.Read);
// якщо файл непорожній
if(stream != null)
{
// створюємо об’єкт StreamReader та асоціюєм його з відкритим //потоком
StreamReader reader = new StreamReader(stream);
// читаєм весь файл та записуємо його в ТехtВох
textBox1.Text = reader.ReadToEnd ();
// закриваємо файл
stream.Close();
}
У таблицях 6.7 та 6.8 відображено властивості та методи FolderBrowserDialog.
Таблиця 6.7. ВластивостіFolderBrowserDialog
1
|
|
Description
| Отримує або задає описовий текст, відображений над елементом управління деревом у діалоговому вікні
|
RootFolder
| Отримує або задає кореневу папку, з якої починається перегляд
|
SelectedPath
| Отримує або задає шлях, вибраний користувачем
|
ShowNewFolderButton
| Отримує або задає значення, яке вказує, чи відображається кнопка New Folder у діалоговому вікні перегляду папок
|
Site
| Отримує або задає примірник ISite для компонента Component
|
Таблиця 6.8. МетодиFolderBrowserDialog
Dispose
| Звільняє всі ресурси, що використовуються об'єктом Component
|
OnFileOk
| Викликає подію FileOk
|
OpenFile
| Відкриває вибраний користувачем файл у режимі "тільки читання". Файл задається властивістю FileName
|
Reset
| Відновлює значення всіх властивостей за замовчуванням
|
ShowDialog
| Запускає загальне діалогове вікно
|