Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсач.docx
Скачиваний:
17
Добавлен:
25.03.2018
Размер:
327.58 Кб
Скачать
  • InitializeLifetimeService () - Отримує об'єкт служби часу існування для управління політикою часу існування для цього примірника

  • Reset () - Скидає властивості до значень за замовчуванням

  • ShowDialog () - Запускає загальне діалогове вікно з заданим за замовчуванням власником

  • ShowDialog (IWin32Window) - Запускає загальне діалогове вікно із зазначеним власником

  • ToString () - Повертає String містить ім'я Component, якщо такі є. Цей метод не слід перевизначати

Файли

Для роботи з файлами призначена пара класів File і FileInfo. З їх допомогою ми можемо створювати, видаляти, переміщати файли, отримувати їх властивості та багато іншого.

Деякі корисні методи і властивості класу FileInfo:

  • CopyTo (path): копіює файл в нове місце за вказаною шляху path

  • Create (): створює файл

  • Delete (): видаляє файл

  • MoveTo (destFileName): переміщує файл в нове місце

  • Властивість Directory: отримує батьківський каталог у вигляді об'єкта DirectoryInfo

  • Властивість DirectoryName: отримує повний шлях до батьківського каталогу

  • Властивість Exists: вказує, чи існує файл

  • Властивість Length: отримує розмір файлу

  • Властивість Extension: отримує розширення файлу

  • Властивість Name: отримує ім'я файлу

  • Властивість FullName: отримує повне ім'я файлу

Клас File реалізує схожу функціональність за допомогою статичних методів:

  • Copy (): копіює файл в нове місце

  • Create (): створює файл

  • Delete (): видаляє файл

  • Move: переміщує файл в нове місце

  • Exists (file): визначає, чи існує файл

Метод CopyTo класу FileInfo приймає два параметри: шлях, по якому файл буде копіюватися, і логічне значення, яке вказує, чи треба при копіюванні перезаписувати файл (якщо true файл при копіюванні перезаписується). Якщо ж в якості останнього параметра передати значення false, то якщо такий файл вже існує, додаток видасть помилку.

Метод Copy класу File приймає три параметри: шлях до вихідного файлу, шлях, по якому файл буде копіюватися, і логічне значення, яке вказує, чи буде файл перезаписуватися.

Крім того, щоб читати / записувати дані в файл з можна використовувати потоки.

Потік - це якась незалежна послідовність інструкцій для виконання тієї чи іншої дії в програмі. В одному конкретному потоці виконується одна конкретна послідовність дій.

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

Клас Stream є абстрактним базовим класом для всіх потокових класів в С#. Для роботи з файлами нам знадобиться клас FileStream (файловий потік).

FileStream - представляє потік, який дозволяє виконувати операції читання / запису в файл.

static void Main (string [] args)

{

   FileStream file = new FileStream ( "d: \\ test.txt", FileMode.Open

, FileAccess.Read); // відкриває файл тільки для читання

}

Режими відкриття FileMode:

  • Append - відкриває файл (якщо існує) і переводить покажчик в кінець файлу (дані будуть дописуватися в кінець), або створює новий файл. Даний режим можливий тільки при режимі доступу FileAccess.Write.

  • Create - створює новий файл (якщо існує - замінює)

  • CreateNew - створює новий файл (якщо існує - генерується виняток)

  • Open - відкриває файл (якщо не існує - генерується виняток)

  • OpenOrCreate - відкриває файл, або створює новий, якщо його не існує

  • Truncate - відкриває файл, але всі дані всередині файлу затирає (якщо файлу не існує - генерується виняток)

Потоки

Для оптимального копіювання файлів використаємо від 1 до 8 потоків, кількість можна змінювати в залежності від обсягу файлів.

Для того щоб працювати з потоками треба підключити бібліотеку

using System.Threading.

Мова C # має вбудовану підтримку багатопоточності, а середовище .NET Framework надає відразу кілька класів для роботи з потоками, що в купе дуже допомагає гнучко і правильно реалізовувати і налаштовувати многопоточность в проектах.

У середовищі .NET Framework існує два типи потоків: основний і фоновий (допоміжний). В цілому відмінність між ними одне - якщо першим завершиться основний потік, то фонові потоки в його процесі будуть також примусово зупинено, якщо ж першим завершиться фоновий потік, то це не вплине на зупинку основного потоку - той буде продовжувати функціонувати до тих пір, поки не виконає всю роботу і самостійно не зупиниться. Зазвичай при створенні потоку йому за замовчуванням присвоюється основний тип.

Черга

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

Черга (queue) - це колекція, в якій елементи обробляються за схемою "перший увійшов, перший вийшов" (first in, first out - FIFO). Елемент, вставлений в чергу першим, першим же і читається.

Черги корисні для зберігання повідомлення в тому порядку, в якому вони були отримані, для подальшої послідовної обробки цих повідомлень. Цей клас реалізує чергу у вигляді циклічного масиву. Об'єкти, що зберігаються в колекції Queue, вставляються в один кінець черги, а видаляються з іншого кінця.

Ємність колекції Queue - це кількість елементів, яке може вмістити колекція Queue. Коли в колекцію Queue додаються елементи, її ємність автоматично збільшується належним чином за допомогою перерозподілу. Ємність може бути зменшена за допомогою виклику методу TrimToSize.

Коефіцієнт зростання - це число, на яке множиться поточна ємність при необхідності її збільшення. Коефіцієнт зростання визначається при побудові колекції Queue. За замовчуванням коефіцієнт зростання дорівнює 2,0. Ємність колекції Queue завжди збільшується не менше, ніж на 4, незалежно від коефіцієнта зростання. Наприклад, кожен раз, коли потрібно збільшити ємність колекції Queue з коефіцієнтом зростання, що дорівнює 1,0, ця ємність завжди збільшуватися на чотири.

У колекції Queue значення null є допустимим. Також дозволяється повторення елементів.

Будь-член цього типу, оголошений як public static (Shared в Visual Basic), є потокобезпечна. Потокобезпечна елементів примірників не гарантовано.

Для забезпечення потокобезпечна операцій над об'єктом Queue, всі вони повинні виконуватися за допомогою оболонки, яку повертатимуть методом Synchronized.

Перерахування колекції не є потокобезпечна процедурою. Навіть якщо колекція синхронізована, інші потоки можуть її змінити, що призведе до видачі виключення перечіслітеля. Щоб забезпечити потокобезпечна при перерахуванні, можна або заблокувати колекцію на весь час перерахування, або перехоплювати виключення, що виникають в результаті змін, внесених іншими потоками.

Черга реалізується за допомогою класів Queue з простору імен System.Collections і Queue <T> з простору імен System.Collections.Generic.

Члени класу Queue <T> представлені нижче:

  • Count - Властивість Count повертає кількість елементів в черзі

  • Enqueue () - Метод Enqueue () додає елемент в кінець черги.

  • Dequeue () - Метод Dequeue () читає і видаляє елемент з голови черги. Якщо на момент виклику методу Dequeue () елементів в черзі більше немає, генерується виключення InvalidOperationException.

  • Peek () - Метод Peek () читає елемент з голови черги, але не видаляє його.

  • TrimExcess () - Метод TrimExcess () змінює ємність черги. Метод Dequeue () видаляє елемент з черги, але не змінює її ємності. TrimExcess () дозволяє позбутися від порожніх елементів на початку черги.