Net framework і c# module 16
-
Upload
andriy-gladkiy -
Category
Technology
-
view
228 -
download
0
Transcript of Net framework і c# module 16
.NET Framework & C#Module 16 Взаємодія з файловою
системою
2
В цьому модулі: Модель потоків в C#. Простір імен System.IO. Клас Stream Аналіз байтових, символьних та двійкових класів потоків Використання класу FileStream для файлових операцій Використання класу StreamWriter і StreamReader для файлових
операцій Використання класу BinaryWriter і BinaryReader для файлових
операцій Використання класу Directory, DirectoryInfo, File, FileInfo для
файлових операцій Регулярні вирази
Andriy Gladkyy [email protected]
3
Модель потоків в C#. Простір імен System.IO. Клас Stream
Практично будь які операції, пов’язані з введенням/виведення будь якої послідовності байт (файл, пристрій введення/виведення, потік шифрування і т. д.) в .NET реалізуються за допомогою потоків.
Базовий клас для всіх потоків – System.IO.Stream. Клас Stream і його похідні класи представляють універсальне
представлення різних типів введення/виведення, ізолюючи програміста від окремих свідчень операційної системи і базових пристроїв
Деяка реалізація потоків виконую локальну буферизацію основних даних для покращення продуктивності. В таких потоках, для видалення внутрішніх буферів і забезпечення запису всіх даних в основне джерело даних або сховище об’єктів можна використовувати метод Flush.
Під час виклику метода Close для класу Stream всі дані буфера будуть очищені, тобто викликається метод Flush.
Метод Close також вивільняє такі ресурси операційної системи як: дескриптори файлів, мереживі підключення або пам’ять, для внутрішньої буферизації.
Andriy Gladkyy [email protected]
4
Аналіз байтових, символьних та двійкових класів потоків
Багато потоків, які працюють безпосередньо з пристроями введення/виведення, вміють писати/читати лише послідовність байт. Це не зовсім зручно. Тому в .Net існують класи наслідники від Stream, які вміють працювати з більш складними типами даних. Це класи:
◦ StreamReader◦ StreamWriter◦ BinaryReader◦ BinaryWriter
Andriy Gladkyy [email protected]
5
Використання класу FileStream для файлових операцій
Клас FileStream представляє собою файловий потік. Дозволяє проводити операції читання і запис з файлів. Підтримує метод Seek, що дозволяє переміщувати положення курсору
в файлі. Даний клас дозволяє працювати з файлом, як з послідовністю байт і
відповідно не підтримує напряму читання і запис інших типів даних.
Andriy Gladkyy [email protected]
6Andriy Gladkyy [email protected]
Демонстрація
7
Конструктор FileStream Першим параметром передається шлях до файлу типу string Другим параметром – змінна типу FileMode (перерахування). Описує
яким чином файл повинен бути відкритий операційною системою
Andriy Gladkyy [email protected]
8Andriy Gladkyy [email protected]
Третій параметр – змінна типу FileAccess (перерахування, що містить атрибут FlagAtribute, тобто підтримує побітове з’єднання складових його значень за допомогою оператора | ). Він описує, яким чином здійснюється доступ до файлу:◦ FileAccess.Write – запис◦ FileAccess.Read – читання◦ FileAccess.ReadWrite – читання/запис
Четвертий параметр – змінна типу FileShare (також перерахування, містить атрибут FlagAtribute). Цей параметр дозволяє керувати доступом, який інші об’єкти FileStream зможуть здійснювати до цього файлу.
9Andriy Gladkyy [email protected]
10
Використання класу StreamWriter і StreamReader для файлових операцій
Дані класи можуть самостійно працювати з текстовими файлами – для цього необхідно використати відповідний конструктор.
Демонстрація
Andriy Gladkyy [email protected]
11Andriy Gladkyy [email protected]
При роботі з даними класами варто звернути увагу на наступні моменти. В об’єктів типу StreamWriter є булева властивість AutoFlush, якщо
встановити його в true можна не викликати кожного разу метод Flush().
Методи Write() і WriteLine() приймають об’єкти різних типів, викликаючи метод ToString().
Дані методи підтримують форматування рядків, використовуючи для цього String.Format().
В об’єктів типу StreamReader є булева властивість EndOfStream, яка показує чи не досягли ми кінця потоку. Також для об’єктів визначено декілька методів для читання:◦ Read() – читає наступний символ або масив символів◦ ReadBlock() – читає масив символів◦ ReadLine() – читає рядок від поточної позиції до символу переходу на новий
рядок◦ ReadToEnd() – читає потік від поточної позиції до кінця файлу
12
Використання класу BinaryWriter і BinaryReader для файлових операцій
Дані класи призначені для запису/читання простих типів значень, а також рядків у відповідному кодуванні.
Ці класи мають перевантажений конструктор, в яких можна задати кодування для роботи з рядками
Демонстрація Об’єкти класу BinaryWriter мають лише один метод для запису Write(),
який має декілька перевантажених варіантів, що приймають об’єкти різних типів даних.
Об’єкти класу BinaryReader мають декілька методів, призначених для читання різних типів даних.
Andriy Gladkyy [email protected]
13
Використання класу Directory, DirectoryInfo, File, FileInfo для файлових операцій
Дані класи призначенні для роботи з файлами і папками Directory і DirectoryInfo – для роботи з папками File і FileInfo – для роботи з файлами
Різниця між цими класами в тому, що класи Directory і File статичні, а DirectoryInfo і FileInfo дозволяють створити об’єкт
Демонстрація
Andriy Gladkyy [email protected]
14
Основні методи класів Directory і DirectoryInfo; File і FileInfo
Andriy Gladkyy [email protected]
15
Основні методи класів Directory і DirectoryInfo; File і FileInfo
Andriy Gladkyy [email protected]
17
Регулярні вирази .Net Framework має вбудовану підтримку регулярних виразів. Класи, які здійснюють роботу з регулярними виразами розміщені в
просторі імен System.Text.RegularExpression
Класи простору імен System.Text.RegularExpression
Andriy Gladkyy [email protected]
18
Регулярні вирази Ключовий клас, який дозволяє створити регулярний вираз – Regex,
має декілька конструкторів:◦ new Regex (string pattern)◦ new Regex (string pattern, RegexOptions options)
Patterns – маска регулярного виразу, створена відповідно до синтаксису. За допомогою неї буде здійснюватись пошук в тексті
Options - додаткові параметри, перерахування типу RegexOptions, які мають атрибут FlagsAttribute. Дане перерахування має наступні значення:
Andriy Gladkyy [email protected]
19Andriy Gladkyy [email protected]
20
Демонстрація
В запропонованому тексті будемо знаходити і заміняти ділянки, що відповідають масці регулярного виразу.
Andriy Gladkyy [email protected]
22Andriy Gladkyy [email protected]
23Andriy Gladkyy [email protected]