net framework і c# module 16

23
.NET Framework & C# Module 16 Взаємодія з файловою системою

Upload: andriy-gladkiy

Post on 10-Apr-2017

228 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Net framework і c# module 16

.NET Framework & C#Module 16 Взаємодія з файловою

системою

Page 2: Net framework і c# module 16

2

В цьому модулі: Модель потоків в C#. Простір імен System.IO. Клас Stream Аналіз байтових, символьних та двійкових класів потоків Використання класу FileStream для файлових операцій Використання класу StreamWriter і StreamReader для файлових

операцій Використання класу BinaryWriter і BinaryReader для файлових

операцій Використання класу Directory, DirectoryInfo, File, FileInfo для

файлових операцій Регулярні вирази

Andriy Gladkyy [email protected]

Page 3: Net framework і c# module 16

3

Модель потоків в C#. Простір імен System.IO. Клас Stream

Практично будь які операції, пов’язані з введенням/виведення будь якої послідовності байт (файл, пристрій введення/виведення, потік шифрування і т. д.) в .NET реалізуються за допомогою потоків.

Базовий клас для всіх потоків – System.IO.Stream. Клас Stream і його похідні класи представляють універсальне

представлення різних типів введення/виведення, ізолюючи програміста від окремих свідчень операційної системи і базових пристроїв

Деяка реалізація потоків виконую локальну буферизацію основних даних для покращення продуктивності. В таких потоках, для видалення внутрішніх буферів і забезпечення запису всіх даних в основне джерело даних або сховище об’єктів можна використовувати метод Flush.

Під час виклику метода Close для класу Stream всі дані буфера будуть очищені, тобто викликається метод Flush.

Метод Close також вивільняє такі ресурси операційної системи як: дескриптори файлів, мереживі підключення або пам’ять, для внутрішньої буферизації.

Andriy Gladkyy [email protected]

Page 4: Net framework і c# module 16

4

Аналіз байтових, символьних та двійкових класів потоків

Багато потоків, які працюють безпосередньо з пристроями введення/виведення, вміють писати/читати лише послідовність байт. Це не зовсім зручно. Тому в .Net існують класи наслідники від Stream, які вміють працювати з більш складними типами даних. Це класи:

◦ StreamReader◦ StreamWriter◦ BinaryReader◦ BinaryWriter

Andriy Gladkyy [email protected]

Page 5: Net framework і c# module 16

5

Використання класу FileStream для файлових операцій

Клас FileStream представляє собою файловий потік. Дозволяє проводити операції читання і запис з файлів. Підтримує метод Seek, що дозволяє переміщувати положення курсору

в файлі. Даний клас дозволяє працювати з файлом, як з послідовністю байт і

відповідно не підтримує напряму читання і запис інших типів даних.

Andriy Gladkyy [email protected]

Page 6: Net framework і c# module 16

6Andriy Gladkyy [email protected]

Демонстрація

Page 7: Net framework і c# module 16

7

Конструктор FileStream Першим параметром передається шлях до файлу типу string Другим параметром – змінна типу FileMode (перерахування). Описує

яким чином файл повинен бути відкритий операційною системою

Andriy Gladkyy [email protected]

Page 8: Net framework і c# module 16

8Andriy Gladkyy [email protected]

Третій параметр – змінна типу FileAccess (перерахування, що містить атрибут FlagAtribute, тобто підтримує побітове з’єднання складових його значень за допомогою оператора | ). Він описує, яким чином здійснюється доступ до файлу:◦ FileAccess.Write – запис◦ FileAccess.Read – читання◦ FileAccess.ReadWrite – читання/запис

Четвертий параметр – змінна типу FileShare (також перерахування, містить атрибут FlagAtribute). Цей параметр дозволяє керувати доступом, який інші об’єкти FileStream зможуть здійснювати до цього файлу.

Page 9: Net framework і c# module 16

9Andriy Gladkyy [email protected]

Page 10: Net framework і c# module 16

10

Використання класу StreamWriter і StreamReader для файлових операцій

Дані класи можуть самостійно працювати з текстовими файлами – для цього необхідно використати відповідний конструктор.

Демонстрація

Andriy Gladkyy [email protected]

Page 11: Net framework і c# module 16

11Andriy Gladkyy [email protected]

При роботі з даними класами варто звернути увагу на наступні моменти. В об’єктів типу StreamWriter є булева властивість AutoFlush, якщо

встановити його в true можна не викликати кожного разу метод Flush().

Методи Write() і WriteLine() приймають об’єкти різних типів, викликаючи метод ToString().

Дані методи підтримують форматування рядків, використовуючи для цього String.Format().

В об’єктів типу StreamReader є булева властивість EndOfStream, яка показує чи не досягли ми кінця потоку. Також для об’єктів визначено декілька методів для читання:◦ Read() – читає наступний символ або масив символів◦ ReadBlock() – читає масив символів◦ ReadLine() – читає рядок від поточної позиції до символу переходу на новий

рядок◦ ReadToEnd() – читає потік від поточної позиції до кінця файлу

Page 12: Net framework і c# module 16

12

Використання класу BinaryWriter і BinaryReader для файлових операцій

Дані класи призначені для запису/читання простих типів значень, а також рядків у відповідному кодуванні.

Ці класи мають перевантажений конструктор, в яких можна задати кодування для роботи з рядками

Демонстрація Об’єкти класу BinaryWriter мають лише один метод для запису Write(),

який має декілька перевантажених варіантів, що приймають об’єкти різних типів даних.

Об’єкти класу BinaryReader мають декілька методів, призначених для читання різних типів даних.

Andriy Gladkyy [email protected]

Page 13: Net framework і c# module 16

13

Використання класу Directory, DirectoryInfo, File, FileInfo для файлових операцій

Дані класи призначенні для роботи з файлами і папками Directory і DirectoryInfo – для роботи з папками File і FileInfo – для роботи з файлами

Різниця між цими класами в тому, що класи Directory і File статичні, а DirectoryInfo і FileInfo дозволяють створити об’єкт

Демонстрація

Andriy Gladkyy [email protected]

Page 14: Net framework і c# module 16

14

Основні методи класів Directory і DirectoryInfo; File і FileInfo

Andriy Gladkyy [email protected]

Page 15: Net framework і c# module 16

15

Основні методи класів Directory і DirectoryInfo; File і FileInfo

Andriy Gladkyy [email protected]

Page 16: Net framework і c# module 16

16

Статичний клас для роботи з шляхами

Andriy Gladkyy [email protected]

Page 17: Net framework і c# module 16

17

Регулярні вирази .Net Framework має вбудовану підтримку регулярних виразів. Класи, які здійснюють роботу з регулярними виразами розміщені в

просторі імен System.Text.RegularExpression

Класи простору імен System.Text.RegularExpression

Andriy Gladkyy [email protected]

Page 18: Net framework і c# module 16

18

Регулярні вирази Ключовий клас, який дозволяє створити регулярний вираз – Regex,

має декілька конструкторів:◦ new Regex (string pattern)◦ new Regex (string pattern, RegexOptions options)

Patterns – маска регулярного виразу, створена відповідно до синтаксису. За допомогою неї буде здійснюватись пошук в тексті

Options - додаткові параметри, перерахування типу RegexOptions, які мають атрибут FlagsAttribute. Дане перерахування має наступні значення:

Andriy Gladkyy [email protected]

Page 19: Net framework і c# module 16

19Andriy Gladkyy [email protected]

Page 20: Net framework і c# module 16

20

Демонстрація

В запропонованому тексті будемо знаходити і заміняти ділянки, що відповідають масці регулярного виразу.

Andriy Gladkyy [email protected]

Page 21: Net framework і c# module 16

21

Спеціальні символи в масках для регулярних виразів

Andriy Gladkyy [email protected]

Page 22: Net framework і c# module 16

22Andriy Gladkyy [email protected]

Page 23: Net framework і c# module 16

23Andriy Gladkyy [email protected]