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

Más contenido relacionado

La actualidad más candente (10)

Net Framework and C# Module 3 4. Inheritance, Abstractions
Net Framework and C# Module 3 4. Inheritance, AbstractionsNet Framework and C# Module 3 4. Inheritance, Abstractions
Net Framework and C# Module 3 4. Inheritance, Abstractions
 
System programing module 2. Threads
System programing module 2. ThreadsSystem programing module 2. Threads
System programing module 2. Threads
 
NET Framework and C# Module 12.2. Garbage Collector
NET Framework and C# Module 12.2. Garbage CollectorNET Framework and C# Module 12.2. Garbage Collector
NET Framework and C# Module 12.2. Garbage Collector
 
12 Architecture
12 Architecture12 Architecture
12 Architecture
 
Net framework і c# module 9
Net framework і c# module 9Net framework і c# module 9
Net framework і c# module 9
 
Net framework і c# module 17
Net framework і c# module 17Net framework і c# module 17
Net framework і c# module 17
 
NET Framework and C# Module 6. Delegates, Events
NET Framework and C# Module 6. Delegates, EventsNET Framework and C# Module 6. Delegates, Events
NET Framework and C# Module 6. Delegates, Events
 
DrupalTour. Zhytomyr — Entity API in Drupal 7 (Ivan Tibezh, InternetDevels)
DrupalTour. Zhytomyr — Entity API in Drupal 7 (Ivan Tibezh, InternetDevels)DrupalTour. Zhytomyr — Entity API in Drupal 7 (Ivan Tibezh, InternetDevels)
DrupalTour. Zhytomyr — Entity API in Drupal 7 (Ivan Tibezh, InternetDevels)
 
лаб. роб. №2 обєкти та сервіси що ними надаються
лаб. роб. №2   обєкти та сервіси що ними надаютьсялаб. роб. №2   обєкти та сервіси що ними надаються
лаб. роб. №2 обєкти та сервіси що ними надаються
 
Advanced c sharp part 3
Advanced c sharp part 3Advanced c sharp part 3
Advanced c sharp part 3
 

Similar a Net framework і c# module 16

Урок 7 Операційна ситема її складові та функції
Урок 7 Операційна ситема її складові та функціїУрок 7 Операційна ситема її складові та функції
Урок 7 Операційна ситема її складові та функції
StAlKeRoV
 
файли та папки 6 клас
файли та папки 6 класфайли та папки 6 клас
файли та папки 6 клас
Illariya
 
Презентація 10 клас Урок 18 для учнів 10 класу вааааааааууу ахуєть
Презентація 10 клас Урок 18 для учнів 10 класу вааааааааууу ахуєтьПрезентація 10 клас Урок 18 для учнів 10 класу вааааааааууу ахуєть
Презентація 10 клас Урок 18 для учнів 10 класу вааааааааууу ахуєть
kostyasheremetyev1
 
.NET Platform. C# Basics
.NET Platform. C# Basics.NET Platform. C# Basics
.NET Platform. C# Basics
eleksdev
 
реферат з інформатики
реферат з інформатикиреферат з інформатики
реферат з інформатики
Tanyushka Bora-Bora
 
Semantic Coding and Microformats
Semantic Coding and  MicroformatsSemantic Coding and  Microformats
Semantic Coding and Microformats
Quintagroup
 

Similar a Net framework і c# module 16 (20)

Урок 7 Операційна ситема її складові та функції
Урок 7 Операційна ситема її складові та функціїУрок 7 Операційна ситема її складові та функції
Урок 7 Операційна ситема її складові та функції
 
Module_01.pdf (Модуль 1. Вступ до вебтехнологій. Структура HTML. Форматуванн...
Module_01.pdf (Модуль 1. Вступ до вебтехнологій. Структура HTML.  Форматуванн...Module_01.pdf (Модуль 1. Вступ до вебтехнологій. Структура HTML.  Форматуванн...
Module_01.pdf (Модуль 1. Вступ до вебтехнологій. Структура HTML. Форматуванн...
 
Ado.net module 1
Ado.net module 1Ado.net module 1
Ado.net module 1
 
файли та папки 6 клас
файли та папки 6 класфайли та папки 6 клас
файли та папки 6 клас
 
Поняття моделі даних, бази даних
Поняття моделі даних, бази данихПоняття моделі даних, бази даних
Поняття моделі даних, бази даних
 
Презентація 10 клас Урок 18 для учнів 10 класу вааааааааууу ахуєть
Презентація 10 клас Урок 18 для учнів 10 класу вааааааааууу ахуєтьПрезентація 10 клас Урок 18 для учнів 10 класу вааааааааууу ахуєть
Презентація 10 клас Урок 18 для учнів 10 класу вааааааааууу ахуєть
 
9 календарне планування
9 календарне планування9 календарне планування
9 календарне планування
 
.NET Platform. C# Basics
.NET Platform. C# Basics.NET Platform. C# Basics
.NET Platform. C# Basics
 
реферат з інформатики
реферат з інформатикиреферат з інформатики
реферат з інформатики
 
Android Storage
Android StorageAndroid Storage
Android Storage
 
Lecture 09 Android Storage
Lecture 09 Android StorageLecture 09 Android Storage
Lecture 09 Android Storage
 
Semantic Coding and Microformats
Semantic Coding and  MicroformatsSemantic Coding and  Microformats
Semantic Coding and Microformats
 
файли
файлифайли
файли
 
презентація вчителя
презентація вчителяпрезентація вчителя
презентація вчителя
 
Інтернет
ІнтернетІнтернет
Інтернет
 
Razdel6
Razdel6Razdel6
Razdel6
 
Razdel6
Razdel6Razdel6
Razdel6
 
Урок 22. Знайомство з середовищем програмування. Елементи вікна програмування
Урок 22. Знайомство з середовищем програмування. Елементи вікна програмуванняУрок 22. Знайомство з середовищем програмування. Елементи вікна програмування
Урок 22. Знайомство з середовищем програмування. Елементи вікна програмування
 
System programing module 1
System programing module 1System programing module 1
System programing module 1
 
6
66
6
 

Más de Andrii Hladkyi (20)

Net Framework and c# Lesson 1
Net Framework and c# Lesson 1Net Framework and c# Lesson 1
Net Framework and c# Lesson 1
 
Wpf module 2
Wpf module 2Wpf module 2
Wpf module 2
 
Wpf module 1
Wpf module 1Wpf module 1
Wpf module 1
 
Msp module 3
Msp module 3Msp module 3
Msp module 3
 
Msp module 2
Msp module 2Msp module 2
Msp module 2
 
Msp module 1
Msp module 1Msp module 1
Msp module 1
 
Ado.net module 2
Ado.net module 2Ado.net module 2
Ado.net module 2
 
Design pattern module 1
Design pattern module 1Design pattern module 1
Design pattern module 1
 
Win api module_2.0_gdi+
Win api module_2.0_gdi+Win api module_2.0_gdi+
Win api module_2.0_gdi+
 
Win api module_1.1_ok
Win api module_1.1_okWin api module_1.1_ok
Win api module_1.1_ok
 
Win api module_6.2
Win api module_6.2Win api module_6.2
Win api module_6.2
 
Design pattern module 1
Design pattern module 1Design pattern module 1
Design pattern module 1
 
Net framework і c# lesson1
Net framework і c# lesson1Net framework і c# lesson1
Net framework і c# lesson1
 
Uml module 6
Uml module 6Uml module 6
Uml module 6
 
Uml module 5
Uml module 5Uml module 5
Uml module 5
 
Uml module 4
Uml module 4Uml module 4
Uml module 4
 
Uml module 3
Uml module 3Uml module 3
Uml module 3
 
Uml module 2
Uml module 2Uml module 2
Uml module 2
 
Uml module 1
Uml module 1Uml module 1
Uml module 1
 
System programing module 3
System programing module 3System programing module 3
System programing module 3
 

Net framework і c# module 16

  • 1. .NET Framework & C# Module 16 Взаємодія з файловою системою
  • 2. В цьому модулі:  Модель потоків в C#. Простір імен System.IO. Клас Stream  Аналіз байтових, символьних та двійкових класів потоків  Використання класу FileStream для файлових операцій  Використання класу StreamWriter і StreamReader для файлових операцій  Використання класу BinaryWriter і BinaryReader для файлових операцій  Використання класу Directory, DirectoryInfo, File, FileInfo для файлових операцій  Регулярні вирази 2 Andriy Gladkyy KspDevelop@gmail.com
  • 3. Модель потоків в C#. Простір імен System.IO. Клас Stream  Практично будь які операції, пов’язані з введенням/виведення будь якої послідовності байт (файл, пристрій введення/виведення, потік шифрування і т. д.) в .NET реалізуються за допомогою потоків.  Базовий клас для всіх потоків – System.IO.Stream.  Клас Stream і його похідні класи представляють універсальне представлення різних типів введення/виведення, ізолюючи програміста від окремих свідчень операційної системи і базових пристроїв  Деяка реалізація потоків виконую локальну буферизацію основних даних для покращення продуктивності. В таких потоках, для видалення внутрішніх буферів і забезпечення запису всіх даних в основне джерело даних або сховище об’єктів можна використовувати метод Flush.  Під час виклику метода Close для класу Stream всі дані буфера будуть очищені, тобто викликається метод Flush.  Метод Close також вивільняє такі ресурси операційної системи як: дескриптори файлів, мереживі підключення або пам’ять, для внутрішньої буферизації. Andriy Gladkyy KspDevelop@gmail.com 3
  • 4. Аналіз байтових, символьних та двійкових класів потоків  Багато потоків, які працюють безпосередньо з пристроями введення/виведення, вміють писати/читати лише послідовність байт. Це не зовсім зручно. Тому в .Net існують класи наслідники від Stream, які вміють працювати з більш складними типами даних. Це класи: ◦ StreamReader ◦ StreamWriter ◦ BinaryReader ◦ BinaryWriter Andriy Gladkyy KspDevelop@gmail.com 4
  • 5. Використання класу FileStream для файлових операцій  Клас FileStream представляє собою файловий потік.  Дозволяє проводити операції читання і запис з файлів.  Підтримує метод Seek, що дозволяє переміщувати положення курсору в файлі.  Даний клас дозволяє працювати з файлом, як з послідовністю байт і відповідно не підтримує напряму читання і запис інших типів даних. Andriy Gladkyy KspDevelop@gmail.com 5
  • 7. Конструктор FileStream  Першим параметром передається шлях до файлу типу string  Другим параметром – змінна типу FileMode (перерахування). Описує яким чином файл повинен бути відкритий операційною системою Andriy Gladkyy KspDevelop@gmail.com 7
  • 8. Andriy Gladkyy KspDevelop@gmail.com 8  Третій параметр – змінна типу FileAccess (перерахування, що містить атрибут FlagAtribute, тобто підтримує побітове з’єднання складових його значень за допомогою оператора | ). Він описує, яким чином здійснюється доступ до файлу: ◦ FileAccess.Write – запис ◦ FileAccess.Read – читання ◦ FileAccess.ReadWrite – читання/запис  Четвертий параметр – змінна типу FileShare (також перерахування, містить атрибут FlagAtribute). Цей параметр дозволяє керувати доступом, який інші об’єкти FileStream зможуть здійснювати до цього файлу.
  • 10. Використання класу StreamWriter і StreamReader для файлових операцій  Дані класи можуть самостійно працювати з текстовими файлами – для цього необхідно використати відповідний конструктор.  Демонстрація Andriy Gladkyy KspDevelop@gmail.com 10
  • 11. Andriy Gladkyy KspDevelop@gmail.com 11 При роботі з даними класами варто звернути увагу на наступні моменти.  В об’єктів типу StreamWriter є булева властивість AutoFlush, якщо встановити його в true можна не викликати кожного разу метод Flush().  Методи Write() і WriteLine() приймають об’єкти різних типів, викликаючи метод ToString().  Дані методи підтримують форматування рядків, використовуючи для цього String.Format().  В об’єктів типу StreamReader є булева властивість EndOfStream, яка показує чи не досягли ми кінця потоку. Також для об’єктів визначено декілька методів для читання: ◦ Read() – читає наступний символ або масив символів ◦ ReadBlock() – читає масив символів ◦ ReadLine() – читає рядок від поточної позиції до символу переходу на новий рядок ◦ ReadToEnd() – читає потік від поточної позиції до кінця файлу
  • 12. Використання класу BinaryWriter і BinaryReader для файлових операцій  Дані класи призначені для запису/читання простих типів значень, а також рядків у відповідному кодуванні.  Ці класи мають перевантажений конструктор, в яких можна задати кодування для роботи з рядками Демонстрація  Об’єкти класу BinaryWriter мають лише один метод для запису Write(), який має декілька перевантажених варіантів, що приймають об’єкти різних типів даних.  Об’єкти класу BinaryReader мають декілька методів, призначених для читання різних типів даних. Andriy Gladkyy KspDevelop@gmail.com 12
  • 13. Використання класу Directory, DirectoryInfo, File, FileInfo для файлових операцій  Дані класи призначенні для роботи з файлами і папками  Directory і DirectoryInfo – для роботи з папками  File і FileInfo – для роботи з файлами Різниця між цими класами в тому, що класи Directory і File статичні, а DirectoryInfo і FileInfo дозволяють створити об’єкт Демонстрація Andriy Gladkyy KspDevelop@gmail.com 13
  • 14. Основні методи класів Directory і DirectoryInfo; File і FileInfo Andriy Gladkyy KspDevelop@gmail.com 14
  • 15. Основні методи класів Directory і DirectoryInfo; File і FileInfo Andriy Gladkyy KspDevelop@gmail.com 15
  • 16. Статичний клас для роботи з шляхами Andriy Gladkyy KspDevelop@gmail.com 16
  • 17. Регулярні вирази  .Net Framework має вбудовану підтримку регулярних виразів.  Класи, які здійснюють роботу з регулярними виразами розміщені в просторі імен System.Text.RegularExpression Класи простору імен System.Text.RegularExpression Andriy Gladkyy KspDevelop@gmail.com 17
  • 18. Регулярні вирази  Ключовий клас, який дозволяє створити регулярний вираз – Regex, має декілька конструкторів: ◦ new Regex (string pattern) ◦ new Regex (string pattern, RegexOptions options)  Patterns – маска регулярного виразу, створена відповідно до синтаксису. За допомогою неї буде здійснюватись пошук в тексті  Options - додаткові параметри, перерахування типу RegexOptions, які мають атрибут FlagsAttribute. Дане перерахування має наступні значення: Andriy Gladkyy KspDevelop@gmail.com 18
  • 20. Демонстрація В запропонованому тексті будемо знаходити і заміняти ділянки, що відповідають масці регулярного виразу. Andriy Gladkyy KspDevelop@gmail.com 20
  • 21. Спеціальні символи в масках для регулярних виразів Andriy Gladkyy KspDevelop@gmail.com 21