Міністерство освіти і науки України
Національний університет « Львівська політехніка »
/
Кафедра ЕОМ
Пояснювальна записка
до курсового проекту
з дисципліни: «Системне програмне забезпечення»
на тему:
«РОЗРОБКА СИСТЕМНОЇ УТИЛІТИ – ФАЙЛОВИЙ МЕНЕДЖЕР»
Завдання
Завданням курсового проекту є розробка системної утиліти «файловий менеджер». Розроблена утиліта має відповідати таким вимогам:
робота в ОС Windows XP, Vista, 7,8;
створювати файли та папки;
відкривати файли та папки;
копіювати файли та папки;
переміщати файли та папки;
видаляти файли та папки;
переглядати адресу директорії;
швидке виконання операцій за допомогою «гарячих» клавіш;
зручний інтерфейс програми.
Анотація
Результатом виконання курсового проекту є повноцінна функціональна системна утиліта – файловий менеджер. У ньому реалізовані алгоритми створення, копіювання, переміщення та видалення файлів і папок. Робота цих алгоритмів основана на використанні системних викликів операційної системи Windows. У проекті розроблено алгоритм відображення файлів та папок директорії та додаткової інформації про них (тип, розмір, дата останньої зміни, атрибути), реалізовано перехоплення системних виключень та їх обробка. Також у курсовому проекті створено систему швидкого доступу до основних функцій утиліти за допомогою «гарячих» клавіш.
Зміст
Вступ ………………………………………………………………………………...5
ОГЛЯД ФАЙЛОВИХ МЕНЕДЖЕРІВ ТА ЗАСОБІВ ЇХ ПРОЕКТУВАННЯ…6
Поняття і призначення файлових менеджерів ……………………………6
Огляд і порівняльний аналіз існуючих файлових менеджерів ………….8
Огляд основних можливостей програми Norton Commander ….………9
Огляд основних можливостей програми Total Commander …………..10
Огляд основних можливостей Far Manager ……………...……………11
Засоби для створення файлового менеджера ………………………...…13
АНАЛІЗ ЗАДАЧІ РОЗРОБКИ СИСТЕМНОЇ УТИЛІТИ ФАЙЛОВИЙ МЕНЕДЖЕР ТА СПОСОБИ ЇЇ ВИРІШЕННЯ ………………………………17
Аналіз задачі розробки файлового менеджера ………………………….17
Способи вирішення поставленої задачі ………………………………….18
РОЗРОБКА СИСТЕМНОЇ УТИЛІТИ ФАЙЛОВИЙ МЕНЕДЖЕР ………...22
Вибір технології програмування ………………………………………….22
Розробка файлового менеджера ………………………………………..…22
Розробка системи гарячих клавіш ………………………………………..32
ТЕСТУВАННЯ УТИЛІТИ ТА ІНСТРУКЦІЯ КОРИСТУВАЧЕВІ ……..34
Опис інтерфейсу та інструкція користувачеві ………………………….34
Тестування програми ……………………………………………………...35
ВИСНОВОК ……………………………………………………………………39
Список використаної літератури ……………………………………………..40
Додатки ………………………………………………………………………….41
Вступ
Файловий менеджер – це програма, яка дозволяє користувачеві керувати файлами і папками на комп'ютері. За допомогою файлового менеджера можна копіювати, переносити, перейменовувати, створювати та видаляти папки та файли.
Файлові менеджери забезпечують зручніший і наочніший спосіб роботи з файлами на ПК ніж операційна система. Власне це і пояснює велику популярність цих застосунків.
На теперішній час у світі різко зросла популярність на планшетні ПК і ПК із сенсорними пристроями вводу/виводу. Відповідно провідні розробники програмного забезпеччня почали випускати операційні системи для роботи ПК із сенсорними екранами. Проте файлових менеджерів, розрахованих для роботи у таких середовищах, існує небагато, а популярність таких застосунків є досить високою.
У курсовому проекті буде розроблений файловий менеджер, який розрахований для роботи на сенсорних ПК на основі ОС Windows 8, хоч він буде підтримувати роботу на усіх попередніх версіях Windows, починаючи з Windows ХР. Інтерфейс та функції файлового менеджера відповідатимуть усім сучасним вимогам та забезпечуватимуть комфортну роботу користувача з файлами.
ОГЛЯД ФАЙЛОВИХ МЕНЕДЖЕРІВ ТА ЗАСОБІВ ЇХ ПРОЕКТУВАННЯ
Файловий менеджер – це спеціальна програма, призначена для різноманітної роботи з файлами: копіювання, перенесення, видалення, редагування текстових файлів, гнучкого запуску програм для роботи з цими файлами. На сьогоднішній день такі застосунки користуються неабиякою популярністю, адже вони є найпрактичнішими програмами для роботи з файлами у різних операційних системах.
У цьому розділі подано інформацію про поняття, призначення, принципи роботи та можливості файлових менеджерів, розглянуто деякі найпопулярніші уже існуючі файлові менеджери та здійснено їх порівняльний аналіз. Оскільки у курсовому проекті не тільки здійснюється огляд, а й розробляється файловий менеджер, то також подано інформацію про засоби, за допомогою яких він буде розроблений.
1.1. Поняття і призначення файлових менеджерів
Файловий менеджер (англ. file manager) – це системна утиліта, що надає інтерфейс користувачу для роботи з файловою системою та файлами. Файловий менеджер дозволяє виконувати наступні операції:
копіювання;
перенесення;
видалення;
редагування текстових файлів;
гнучкий запуск програм для роботи з цими файлами.
Крім основних функцій, багато файлових менеджерів включають ряд додаткових можливостей, таких як робота з мережею (через FTP, NFS і т. п.), резервне копіювання, керування принтерами та інші.
Існує два види файлових менеджерів - навігаційні та ортодоксальні. Основна відмінність полягяє у тому, що в ортодоксальних файлових менеджерів є дві панелі для роботи з файлами, а у навігаційних – одна.
Найбільш відомі ортодоксальні файлові менеджери: Norton Commander, Dos Navigator, Volkov Commander, PIE Commander, FAR Manager, Total Commander, POSIX (Linux, BSD і т. д.), Midnight Commander, Krusader, GNOME Commander.
Навігаційні файлові менеджери: провідник Windows (англ. Windows Explorer), Mac OS X, Finder, Path Finder, POSIX (Linux, BSD і т.д.), Konqueror (поставляється з KDE), Nautilus (поставляється з GNOME).
До складу базового дистрибутиву файлового менеджера мають входити ряд модулів, плагінів, які безпосередньо призначені для:
1. Перегляду і редагування текстових файлів, підтримки різних кодувань (включаючи Unicode).
2. Пошуку і заміни файлів, множинного перейменування файлів, перегляду зображень та роботи з архівами.
Файлові менеджери (а також вікна операційних систем Microsoft Windows 95/98/2000 / XP, IBM OS / 2 Warp, IRIX, Linux та ін.) можуть мати такі можливості для відображення каталогів і структури каталогів:
виведення вмісту каталогу в короткому форматі (тільки імена файлів і їх тип);
виведення вмісту каталогу в повному форматі (виведення всіх властивостей файлів);
виведення дерева або гілок дерева каталогів;
виведення інформації про виділений файл;
швидкий перегляд вмісту файлу;
можливість перегляду файлів на віддаленій системі пов'язаної з комп'ютером по мережі, за допомогою модему або прямого з'єднання;
можливість пошуку файлів і відображення результатів пошуку в окремому вікні;
запуск певної програми при відкритті файлу з відповідним розширення;
призначення додаткових програм для перегляду або зміни вмісту файлу в залежності від розширення;
зміна розміру області, що відводиться для зображення вмісту каталогу.
Додатково слід зауважити, що в режимі відображення директорій програми Far, Windows Commander, Norton Commander for Windows 95, підтримують довгі імена файлів. Тому при роботі з довгими іменами файлів в операційних системах Microsoft Windows 95/98/2000/NT4/NT3.51 рекомендую використовувати саме ці програми! В іншому випадку можливо "обрізання" довгих імен. Використання файлових оболонок Norton Commander for DOS, Volkov Commander, DOS Navigator для роботи в цих операційних системах припустимо, якщо для операцій з файлами використовується командний рядок (тобто не використовуються клавіші F5, F6 і F7).
1.2. Огляд і порівняльний аналіз існуючих файлових менеджерів
Першим популярним файловим менеджером у світі був Norton Commander. Його геніальний двопанельний інтерфейс і синій колір для багатьох став синонімом «працюючого комп'ютера». Через деякий час вийшла досконаліша розробка компанії Rit Labs – Dos Navigator. Ми всі довго будемо пам'ятати ту гнучкість і ті можливості, які дав нам DN, а також ті знамениті клавіатурні скорочення Borland-івських оболонок, начебто Ctrl + KB, Ctrl + K К, і Ctrl + H.
1.2.1. Огляд основних можливостей програми Norton Commander
У Norton Commander виведення інформації про вміст каталогів здійснюється в так званих панелях. Панелі – це два прямокутні вікна, обмежені рамкою. Розмір цих вікон або фіксований і становить 40 * 23 (повний розмір) і 40 * 15 (половинний розмір) символів, або залежить від розмірів батьківського вікна (Windows Commander). Будь-яку панель можна вимкнути, а також можна прибрати всі панелі з екрану і залишити екран MS DOS. У Windows Commander такої можливості немає – в ньому кожнен додаток запускається в окремому вікні.
Історично склалося, що панелі в Norton-подібних оболонках (виключаючи знову ж Windows Commander) виводяться у вигляді білих символів на синьому тлі. Саме це спочатку кидається в очі при використанні Norton-подібних оболонок. У Windows Commander ж в якості робочої палітри прийнята палітра Windows за замовчуванням: чорні символи на білому тлі. У більшості Norton - подібних оболонок існує можливість зміни палітри, використовуваної за замовчуванням. Для цього користуються утилітами конфігурування оболонок.
Панелі в Norton Commander мають, принаймні, 3 режими відображення інформації: коротка форма змісту, повна форма змісту і відображення дерева каталогів. У Volkov Commander до цих базових режимів відображення додається так звана інформаційна панель (з інформацією про пристрій, на якому розташований відображений на сусідній панелі каталог). У Norton Commander 3.0 крім цього є режим перегляду в сусідній панелі вмісту файлу, розташованого в поточній панелі. В інших версіях Norton Commander for DOS з'явилися панелі для перегляду вмісту архіву, паспорти каталогу й результату пошуку файлів. Проте найбільш "різноманітним" у використанні різних режимів відображення каталогів є оболонка Far.
Одна з панелей в Norton Commander завжди активна. В активній панелі відображається поточна директорія локального диску. Вона має виділений заголовок. Панель називається активною (або активізованою) тому, що вона має фокус вводу.
Управління режимами відображення панелей здійснюється окремо для правої і лівої панелі. Майже у всіх Norton - подібних оболонках (за винятком Dos Navigator і Windows Commander) існують окремі пункти системного меню для управління лівою і правою панелями. У DOS Navigator і Windows Commander для управління форматами панелей служить один пункт меню. Його вміст змінюється в залежності від того, яка панель активна.
Крім панелей, Norton Commander може містити так званий рядок міні-статусу. У цьому рядку містяться основні призначення функціональних клавіш-акселераторів клавіатури. На відміну від рядка стану вікон в WIMP - інтерфейсі цей рядок не є пасивним, з рядка міні-статусу можна мишкою викликати на виконання команди.
1.2.2. Огляд основних можливостей програми Total Commander
Total Commander — один з найпотужніших двопанельних файлових менеджерів. На відміну від інших файлових менеджерів, у Total Commander не обмежуються лише функціями роботи з файлами і папками. TotalCommander представляє неабиякий асортимент численних додаткових опцій і необхідних інструментів, об'єднаних в єдину оболонку. Використовуючи стандартні можливості встановленої ОС задля досягнення тієї чи іншої мети (наприклад, установка з'єднання з FTP-сервером, копіювання інформації з мережі, групове і одночасне перейменування відразу кількох об'єктів, перегляд і редагування файлів та ін.) вам знадобиться звернутися до декількох додатків ОС. TotalCommander дозволить здійснити вищеописані операції просто обравши відповідну функцію у головному меню програми.
Основні можливості Total Commander:
використання гарячих клавіш як в оригіналі DOS;
підтримка перетягування об'єктів за допомогою функції Drag-and-Drop;
розширене копіювання, переміщення, перейменування і видалення цілих директорій;
обробка і перегляд архівів як субдиректорій папок;
командний рядок для простого запуску програм з вказаними параметрами;
розширена функція пошуку з повно-текстовим пошуком в будь-яких файлах між різними дисками;
внутрішня функція розпакування ZIP-файлів без втручання зовнішніх утиліт;
внутрішні розпаковщики архівів ZIP, ARJ, LZH, GZ, TAR, RAR і ACE форматів;
внутрішній пакувальник ZIP-архівів;
робота з мережевими дисками і FTP-серверами;
повна підтримка Unicode в більшості функцій, де це можливо, включаючи FTP, вбудований ZIP-пакувальник і інтерфейс плагінів;
файл довідки тепер за замовчуванням поставляється в HTML-форматі (CHM) ;
захист збережених FTP-паролів за допомогою майстра-паролів, що використовує шифрування за алгоритмом AES256.
Отже, Total Commander - це швидкий і стабільний файловий менеджер, який має безліч можливостей для роботи з файлами та директоріями ОС.
1.2.3. Огляд основних можливостей Far Manager
FAR Manager – це консольний файловий менеджер для операційних систем сімейства Windows. Ця програма виглядає як DOS - оболонка, але пристосована під Windows. Значна перевага цієї програми – це підтримка багатьох плагінів. Недолік програми полягає в її налаштуванні. На даний момент плагінів для FAR Manager існує дуже багато, що й зробило цю програму популярною. Наведемо деякі найважливіші складові програми:
Архіватори в Far. Ви можете створювати, переглядати, змінювати архіви найбільш популярних форматів, таких як RAR, ZIP, ARJ, HA, CAB.
Модулі Far:
керування принтерами (локальними і мережевими);
підсвічування синтаксису у вихідних текстах програм;
робота з FTP-серверами (з підтримкою доступу через різні типи проксі, автоматичною докачкою та ін.);
пошук і заміна символів одночасно у групі файлів із застосуванням регулярних виразів;
перейменування груп файлів з можливістю використання складних масок із символів підстановки і шаблонів;
робота при нестандартних розмірах текстового екрану;
перекодування текстів з урахуванням національних кодових таблиць;
маніпуляції з вмістом кошика;
управління пріоритетами процесів на локальному або на мережевому ПК;
автозавершення слів в редакторі і робота з шаблонами;
редагування системного реєстру Windows;
кодування та декодування файлів у форматі UUE;
обробка Quake PAK файлів;
робота з різними серверами через ODBC;
відображення вмісту файлів довідки Windows;
калькулятори з різними можливостями функції перевірки орфографії при обробці тексту в редакторі FAR;
підготовка каталогу змінних накопичувачів.
Отже, після проведеного порівняльного аналізу можна зробити висновок, що найпопулярнішою та найбільш функціональною утилітою для роботи з файловою системою є Total Commander.
1.3. Засоби мови програмування C# для роботи з файловою системою
У курсовому проекті для створення файлового менеджера будемо використовувати системні виклики ОС Windows. За допомогою системних викликів можна виконувати необхідні нам операції над файлами та папками.
Системний виклик (англ. system call) — це спосіб використання додатками сервісів ядра операційної системи. Це можуть бути сервіси, пов'язані з апаратною складовою комп'ютера (наприклад, доступ до диска), керування процесами та потоками, та багато іншого. Системні виклики забезпечують інтерфейс між процесом та операційною системою. Системні виклики, як правило, реалізуються за допомогою переривань. Переривання автоматично перемикає процесор на потрібний рівень привілеїв та дає право на виконання ядру операційної системи, яке визначає чи надавати сервіс програмі, що зробила системний виклик. Якщо сервіс треба надати, то ядро виконує певний набір інструкцій, які програма не може виконати безпосередньо, перемикає процесор на рівень привілеїв програми та повертає право на виконання.
Для реалізації файлового менеджера у курсовому проекті будемо використовувати мову програмування C#. Відповідно для роботи з файлами та папками використовуватимуться класи та методи простору імен System.IO мови програмування C#. Також у роботі будуть використані такі простори імен:
простір імен System.Threading містить класи та інтерфейси, які дають можливість програмувати в багатопотоковому режимі. На додаток до класів, щоб синхронізувати дії потоку і доступ до даних (Mutex, Monitor, Interlocked, AutoResetEvent і т. д.) даний простір імен включає клас ThreadPool, який дозволяє використовувати кластер системи наданих потоків і клас Timer, який виконує зворотні виклики на потоках з пулу потоків;
простір імен System.Collections.Specialized містить спеціалізовані і строго типізовані колекції, наприклад словник у вигляді зв'язаного списку, бітовий вектор чи колекції, які містять тільки рядки;
простір імен System.Windows.Forms містить класи для створення додатків Windows, які дозволяють найбільш ефективно використовувати розширені можливості для користувача інтерфейсу, доступні в операційній системі Microsoft Windows.
Для створення файлового менеджера у курсовому проекті будуть використовуватися такі класи та методи мови програмування C#:
Клас DirectoryInfo. Клас включає методи для створення, переміщення та перечислення в каталогах і підкаталогах. Цей клас не може бути успадкований. У проекті використовуватимуться такі методи класу:
DirectoryInfo.GetDirectories – повертає підкаталоги поточного каталогу.
DirectoryInfo.GetFiles – повертає список файлів поточного каталогу.
DirectoryInfo.FullName – повертає повний шлях до каталогу чи файлу.
DirectoryInfo.Name – повертає ім'я даного об’єкту класу DirectoryInfo.
DirectoryInfo.LastAccessTime – повертає або задає час останнього доступу до поточного файлу або каталогу.
DirectoryInfo.Attributes – повертає або задає атрибути для поточного файлу або каталогу.
DirectoryInfo.Delete – видаляє папку без можливості відновлення.
Клас FileInfo. Клас включає методи для створення, копіювання, видалення, переміщення і відкриття файлів, а також дозволяє створювати об'єкти FileStream. Цей клас неуспадковується. У курсовому проекті використовуватимуться такі методи класу:
FileInfo.FullName – повертає повний шлях до файлу.
FileInfo.Name – повертає ім'я даного об’єкту класу FileInfo.
FileInfo.Lenght – повертає розмір поточного файлу в байтах.
FileInfo.LastAccessTime – повертає або задає час останнього доступу до поточного файлу.
FileInfo.Attributes – повертає або задає атрибути для поточного файлу.
FileInfo.Create – створює файл.
FileInfo.Delete – видаляє файл без можливості відновлення.
Клас FileStream являє собою потік, який підтримує синхронні і асинхронні операції читання і запису з файлу.
Клас Environment. Цей клас надає відомості про поточне середовище і платформу, а також необхідні засоби для управління ними. Цей клас не успадковується. У курсовому проекті буде використаний метод Environment.GetLogicalDrives, який повертає масив рядків, що містить імена логічних дисків поточного комп'ютера.
Клас System.Diagnostics.Process надає доступ до локальних і віддалених процесів і дозволяє запускати і зупиняти локальні системні процеси. У курсовому проекті використовуватиметься метод Process.Start, який запускає ресурс процесу шляхом вказівки імені документа або файлу програми та пов'язує ресурс з новим компонентом Process.
Клас Directory надає статичні методи для створення, переміщення та перечислення в каталогах і вкладених каталогах. Цей клас неуспадковується. У курсовому проекті буде використано такі методи класу:
6.1. Directory.CreateDirectory – cтворює всі каталоги і підкаталоги по зазначеному шляху.
6.2. Directory.Exists – визначає, чи вказує заданий шлях на існуючий каталог на диску.
6.3. Directory.Delete – видаляє порожній каталог по заданому шляху.
6.4. Directory.GetDirectories – повертає імена підкаталогів (включаючи їх шлях) у вказаній директорії.
6.5. Directory.Move – переміщує файл або каталог з усім його вмістом в нове місце розташування.
Клас File надає статичні методи для створення, копіювання, видалення, переміщення і відкриття файлів, а також допомагає при створенні об'єктів FileStream. У курсовому проекті буде використано такі методи класу:
File.Copy – копіює існуючий файл у новий файл. Перезапис файлу з тим же ім'ям не дозволено.
File.Exists – визначає, чи існує заданий файл.
File.Delete – видаляє вказаний файл.
File.Create – створює або перезаписує файл по зазначеному шляху.
File.Move – переміщує файл в нове місце розташування.
Клас ListView. Цей клас являє собою елемент управління для виводу інформації у вигляді списку в ОС Windows.
Клас СomboBox. Цей клас являє собою елемент управління, призначений для вибору значення зі списку, який можна відображати і приховувати натисканням на елемент кнопку зі стрілкою, що належить цьому елементу управління.
Клас TextBox. Цей клас являє собою елемент управління, який може використовуватися для відображення або зміни неформатованого тексту.
Клас Button. Цей клас являє собою елемент управління "кнопка" Windows, що реагує на подію ButtonBase.Click.
АНАЛІЗ ЗАДАЧІ РОЗРОБКИ СИСТЕМНОЇ УТИЛІТИ ФАЙЛОВИЙ МЕНЕДЖЕР ТА СПОСОБИ ЇЇ ВИРІШЕННЯ
Аналіз задачі розробки файлового менеджера
Будь-яка інформація в комп'ютері зберігається у вигляді файлів. Тому будь-яка робота користувача з ЕОМ будується на основі найпростіших операцій над файлами. Відповідно на кожному комп'ютері є програма, що дозволяє управляти системою файлів. Управління цією системою включає в себе наступні можливості:
Доступ до файлів і папок.
Запуск файлів.
Виконання операцій над файлами, таких як копіювання, переміщення, видалення, перейменування, встановлення атрибутів, пошук та інші.
Інтеграція зі стандартним контекстним меню, в якому зосереджені основні операції файлової системи.
Створення нових файлів.
Реалізацію цих можливостей здійснює програма «Файловий менеджер».
Жодна операційна система на сьогоднішній день не може обійтися без зручного і надійного файлового менеджера. Величезна кількість наростаючих з кожним днем даних потребує грамотної структуризації і поділу. Не дарма всі сучасні операційні системи, як правило, в першу чергу включають в свій склад саме файловий менеджер, як невід'ємну частину самої ОС і необхідний компонент для реалізації всіх можливостей доступу до файлової системи. При цьому такий доступ повинен задовольняти багатьом, часто протилежним умовам, до яких відносяться: можливість швидкого пошуку і відображення потрібної інформації, повнота операцій над цими даними, гарантоване виключення помилок при цих операціях, простота і т.д.
Можливість швидкого доступу до потрібної інформації та зручний інтерфейс є першочерговими вимогами до файлового менеджера, який розробляється у курсовому проекті. Адже інтерфейс файлового менеджера розробляється спеціально для зручного користування у новій операційній системі Windows 8. У файловому менеджері буде об'єднано найнеобхідніші для користувача функції для роботи з файловою системою в наочному і простому вигляді. Включення всіх можливих операцій не є головною метою розробки програми, основне завдання – забезпечити набір усіх необхідних функцій для роботи з файлами у поєднанні з простим і зручним інтерфейсом. Програма міститиме усі необхідні операції для роботи з файлами, такі як:
створення файлу чи папки;
копіювання файлу або папки;
переміщення файлу або папки;
видалення файлу або папки.
Крім цього у курсовому проекті буде розроблена система швидкого доступу до основних функцій програми за допомогою «гарячих» клавіш, завдяки якій користувач зможе лише одним натиском клавіші виконати необхідні дії.
Способи вирішення поставленої задачі
У курсовому проекті поставлену задачу можна вирішити за допомогою системних викликів операційної системи Windows. Адже за допомогою системних викликів ми можемо доступитися до ядра операційної системи та здійснити необхідні нам операції з файлами та папками. Крім цього потрібно забезпечити інтерфейс роботи з користувачем. Для вирішення поставленої задачі у курсовому проекті розроблений алгоритм роботи файлового менеджера, який наведений на рис. 2.1.
/
Рис. 2.1. Граф-схема роботи файлового менеджера
Робота програми починатиметься з ініціалізації компонентів, яка включатиме в себе створення віконного інтерфейсу, ініціалізації полів та кнопок інтерфейсу, ініціалізації методів та зміннних програми. Після ініціалізації компонентів програми буде здійснений системний виклик для отримання інформації про локальні диски, які доступні на ПК, та виконана ініціалізація адресних змінних (присвоїмо їм адреси локальних дисків). У випадку, коли на ПК буде встановлений лише один локальний диск, то його адреса буде присвоєнна обом адресним змінним. Наступним кроком буде отримання інформації про папки та файли, які міститимуться у директоріях, на які вказуватимуть адресні змінні та відображення цієї інформації у відповідних полях інтерфейсу програми. Ці дії будемо реалізовувати за допомогою системних викликів, які повертатимуть нам список файлів та папок у поточній директорії. Також за допомогою системних викликів будемо зчитувати інформацію про тип, розмір, дату створення та атрибути файлів і папок.
Після виконання описаних вище етапів програма перейде у режим очікування дії від користувача. Користувач зможе виконати такі дії:
Відкрити файл або папку.
Створити файл або папку.
Копіювати файл або папку.
Перемістити файл або папку.
Видалити файл або папку.
Повернутись у попередню директорію.
Змінити локальний диск.
Прочитати довідку.
Вийти із програми.
Якщо користувач обере дію «відкрити файл», то за допомогою системного виклику запустимо процес, який буде асоціюватися з даним файлом та відкриємо його. Якщо користувач виконає аналогічну дію з папкою, то за допомогою системних викликів виведемо вмістиме цієї папки на екран та оновимо адресу.
Якщо користувач обере дію «створити файл або папку», то за допомогою системного виклику створимо файл або папку з іменем і розширенням, яке буде вказане у відповідному текстовому полі програми. Якщо користувач не введе дані про ім'я та розширення, то виведемо на екран спеціальне повідомлення про помилку.
Якщо користувач обере дію копіювати, перемістити чи видалити файл або папку, то за допомогою відповідних системних викликів виконаємо відповідні дії. У випадку помилки виведемо користувачу повідомлення про помилку.
Якщо користувач обере дію «повернутись у попередню директорію», то спершу зменшимо лічильник адрес на 1, а потім виведемо на екран вмістиме директорії, яка буде знаходиться на попередньому рівні у каталозі локального диску та оновимо значення адреси. Якщо такі дії будуть застосовані до кореневої директорії, то на екран просто буде виведено її вміст.
Якщо користувач обере дію «змінити локальний диск», то за допомогою системних викликів виведемо на екран вмістиме кореневої директорії обраного локального диску і змінимо значення адреси.
Якщо користувач обере дію «Прочитати довідку», то на екран буде виведено повідомлення із довідковою інформацією.
Отже, робота файлового менеджера у курсовому проекті буде основана на використанні системних викликів операційної системи Windows та потоках даних для читання та запису інформації.
РОЗРОБКА СИСТЕМНОЇ УТИЛІТИ ФАЙЛОВИЙ МЕНЕДЖЕР
Вибір технології програмування
Для виконання поставленого завдання використано мову програмування C# та середовище програмування Microsoft Visual Studio 2012.
Вибір мови програмування можна обґрунтувати тим, що мова C# має у своєму складі безліч класів та методів для роботи з файловою системою, процесами та потоками ОС Windows. У цієї мови є багато можливостей для реалізації найскладніших алгоритмів і роботи з операційною системою та апаратним середовищем. Також у мові програмування C# зручно працювати з технологією Windows Form.
Середовище програмування Microsoft Visual Studio 2012 має ряд переваг, таких як:
зручна робота з графічним інтерфейсом за допомогою технології Windows Forms;
підтримка .NET Framework;
має у своєму складі редактор коду з підтримкою технології IntelliSense і можливістю найпростішого рефакторінгу коду;
вбудований відлагоджувач може працювати не тільки як відлагоджувач рівня програмного коду, а також як відлагоджувач машинного рівня.
Розробка файлового менеджера
Для розробки системної утиліти «файловий менеджер» використано класи та методи мови програмування C# для роботи з файлами, папками, потоками та процесами операційної системи Windows. Принцип роботи програми наведений на рис. 3.1.
Виконання програми починається з методу InitializeComponent(), який ініціалізує вікно програми Windows Form та всі його компоненти (кнопки, текстові поля та ін.). Після ініціалізації вікна зчитуємо у масив рядків список встановлених на ПК локальних дисків за допомогою статичного методу Environment.GetLogicalDrives() та додаємо їх у список локальних дисків, який відображається у вікні програми за допомогою comboBox1 та comboBox2. Встановлюємо початкові значення адрес за допомогою методів Address1.Add(comboBox1.Text) та Address2.Add(comboBox2.Text). Наступним кроком є створення полів виведення списку файлів та папок. Для вирішення цього завдання створюємо об’єкт ColumnHeader colHead (об’єкт колонки) та додаємо його до загальної структури поля виводу списку файлів за допомогою методу list.Columns.Add(colHead). Таким способом створюємо такі колонки поля виводу:
Назва файлу.
Розмір, [Кб] .
Змінений.
Атрибути.
Після створення колонок виконуємо метод view_filelist(String LD, ListView LW), який здійснює зчитування інформації про файли та папки директорії за адресою LD та виводить її в поле виводу LW. Алгоритм роботи методу поданий на рис. 3.2. та буде розглянутий згодом.
На наступному етапі виконання програма очікує дії від користувача. У разі натиснення клавіші користувачем викликається відповідний обробник події та виконуються відповідні дії.
Якщо користувач обере дію «відкрити файл», то за допомогою методу System.Diagnostics.Process.Start(filename) запускаємо процес, який асоціюється з даним файлом, та відкриваємо його. Якщо користувач обере дію «відкрити папку», то ми, передавши методу view_filelist() адресу цієї папки, виводимо її вмістиме на екран.
Якщо користувач обрав дію «Створити файл або папку», то ми спочатку зчитуємо інформацію про ім’я та розширення файлу (папки) із полів textBox3.Text та comboBox3.Text відповідно. Потім створюємо об’єкт FileInfo та методом Create() створюємо файл. Після створення закриваємо потік файлу методом FileStream.Close(). Якщо у полі «розширення» вікна програми було вказано тип «Папка», то методом System.IO.Directory.CreateDirectory(adr) створюємо директорію з іменем, яке вказано у елементі textBox3.Text. Адресою створення файлу (папки) є адреса поточної директорії активного вікна.
Якщо користувач обрав дію «Копіювати», то ми копіюємо файл або папку у директорію, яка на даний час відкрита у неактивному вікні. Алгоритм копіювання файлів та папок наведений на рис. 3.3. та буде розглянутий згодом.
Якщо користувач обрав дію «Перемістити», то спочатку визначаємо тип об’єкту, який потрібно перемістити. Якщо даний об’єкт є файлом, то переміщуємо його за допомогою методу File.Move(adr, textBox[i].Text + choose.SelectedItems[0].Text.ToString()). Якщо даний об’єкт є папкою, то ми переміщуємо його за допомогою методу Directory.Move(adr, textBox[i].Text + choose.SelectedItems[0].Text.ToString()). У всіх інших випадках виводимо повідомлення про помилку.
Якщо користувач обрав дію «Видалити», то ми видаляємо файл або папку із директорії, яка на даний час відкрита у активному вікні. Алгоритм видалення файлів та папок наведений на рис. 3.4. та буде розглянутий згодом.
Якщо користувач обрав дію «Вибір диску», то за допомогою методів Address[i].Clear(), Address[i].Add(comboBox[i].Text) та view_filelist() виводимо у активне вікно список файлів та папок кореневої директорії обраного локального диску, попередньо змінивши значення адреси на адресу локального диску.
Якщо користувач обрав дію «Повернутися у попередню директорію», то зменшуємо лічильник адреси на одиницю і виводимо у активне вікно список файлів і папок директорії, яка знаходиться на один рівень вище у каталозі файлової системи локального диску. Якщо ж значення лічильника рівне одиниці, то ми оновлюємо поточну директорію.
Якщо користувач обрав дію «Довідка», то за допомогою методу MessageBox.Show("Файловий менеджер - це …") користувачу виводиться довідкова інформація у вигляді повідомлення.
Якщо користувач обрав дію «Вихід», то за допомогою методу this.Close() програма завершує свою роботу.
Після завершення виконання будь-якої дії, обраної користувачем (крім «Вихід»), викликаємо метод view_filelist( ) та оновлюємо поля відображення файлів та папок у вікні програми. Програма знову переходить у стан очікування дії від користувача.
Розглянемо алгоритм роботи методу view_filelist(String LD, ListView LW). Цей метод здійснює зчитування інформації про файли та папки директорії за адресою String LD та виводить цю інформацію в елемент вікна програми ListView LW. Наведемо алгоритм роботи методу на рис. 3.2.
/
Рис. 3.2. Алгоритм роботи методу view_filelist ( )
Робота методу починається з перевірки кореневої директорії. Якщо вона відсутня, то виходимо з функції. Якщо коренева директорія присутня, то створюємо об’єкт цієї директорії System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(LD) та методами dir.GetDirectories() і dir.GetFiles() записуємо у масиви System.IO.DirectoryInfo[] dirs і System.IO.FileInfo[] files список папок і список файлів відповідно. За допомогою методу ListView.BeginUpdate() забороняємо перерисовку елемента відображення інформації ListView і починаємо заповнювати поля. Для цього створюємо елемент списку ListViewItem lvi та елемент поля списку (колонка) ListViewItem.ListViewSubItem lvsi. За допомогою циклу foreach проходимося по списку папок і заповнюємо список виводу інформації (ListView) такими даними:
Ім’я папки (lvi.Text = di.Name).
Індекс іконки (lvi.ImageIndex = 0).
Повний шлях до папки (lvi.Tag = di.FullName) .
У поле «розмір» для папок вказуємо текст «[Папка]» ( lvsi.Text = "[Папка]").
Дата останьої зміни (lvsi.Text = di.LastAccessTime.ToString() ).
Атрибути (lvsi.Text = di.Attributes.ToString() ).
Для додавання інформації для виводу до елемента ListView використаємо метод ListView.Items.Add(lvi) та для додавання поля списку до ListViewItem метод lvi.SubItems.Add(lvsi).
На наступному етапі виконуємо аналогічні дії з об’єктом files та заповнюємо список ListView інформацією про файли. Лише у полі «розмір» вказуємо розмір файлу у кілобайтах (lvsi.Text = (fi.Length/1024).ToString()).
На останьому етапі за допомогою методу ListView.EndUpdate() знімаємо заборону перерисовки елемента ListView та виводимо інформацію на екран.
Розглянемо алгоритм роботи методу копіювання файлів. Цей метод здійснює копіювання файлів та папок у директорію неактивного вікна. Наведемо алгоритм роботи методу на рис. 3.3.
/
Рис. 3.3. Алгоритм копіювання файлів
Робота методу копіювання файлів та папок починається із визначення типу об’єкта, який ми будемо копіювати. Визначення здійснюється методом System.IO.File.Exists(adr) для файлу та System.IO.Directory.Exists(adr) для папки.
Якщо цей об’єкт є файлом, то перевіряємо адресу, за якою потрібно скопіювати файл. Якщо довжина адреси рівна 3, то ми будемо копіювати в корінну директорію локального диску. Якщо довжина адреси більша 3 символів, то після адреси корінного диску додаємо символ “\”. Це пов'язано з тим, що при копіюванні об'єкту не у корінну директорію метод при формуванні адреси пропускає цей символ. Після перевірки адреси виконуємо копіювання файлу за допомогою методу File.Copy(adr, textbox[i].Text + choose.SelectedItems[0].Text.ToString()).
Якщо об’єктом для копіювання є папка, то також перевіряємо адресу, за якою потрібно скопіювати папку (аналогічно як при копіюванні файлу). Після перевірки адреси перевіряємо, чи існує у директорії, в яку ми хочемо скопіювати об’єкт, папка з таким же іменем, що й в об’єкта (метод System.IO.Directory.Exists(sourcePath)). Якщо такої папки немає, то за допомогою методу System.IO.Directory.CreateDirectory(targetPath) створюємо її. На наступному кроці копіюємо у цю папку файли. Для цього створюємо масив файлів, які знаходяться у папці, яку потрібно скопіювати, використавши метод System.IO.Directory.GetFiles(sourcePath). Після цього за допомогою циклу foreach та методу System.IO.File.Copy(s, destFile,