stify"> 3.3 Розробка алгоритмів виконання файлових операцій на основі спроектованих інтерфейсів
Після розробки класів роботи з файлами можна розробляти операції, виконувані над інтерфейсами. Головними файловими операціями підметом розробці є копіювання і видалення.
На малюнку 3.22 представлена ??схема алгоритму копіювання.
Малюнок 3.26 - Схема алгоритму копіювання
Як видно зі схеми алгоритм виконується над абстрактними інтерфейсами об'єктів фільтра, інспектора, файлу призначення, файлу джерела.
У алгоритм так само передається покажчик на змінну, яка визначає, чи була виконана операція хоча б над одним файлом, ця змінна прийме значення «істина», якщо, наприклад, з директорії призначення не буде скопійований жоден файл, через відсутність файлів в директорії джерелі.
За схемою видно, що спочатку відбувається перевірка вхідних параметрів, а потім викликається один з методів, залежно від типу вхідних даних.
На малюнку 3.23 показана схема алгоритму копіювання з директорії в директорію.
Малюнок 3.27 - Схема алгоритму копіювання з директорії в директорію
У загальному вигляді, алгоритм являє собою обхід дерева каталогу джерела з рекурсивним викликом функцій для кожного підкаталогу і файлу.
Для реалізації складних ситуацій, коли можливий розвиток подій за кількома напрямками викликаються відповідні методи об'єкта інспектора, в яких відбувається прийняття рішення.
На малюнку 3.24 показана схема алгоритму копіювання з файлу в директорію.
Малюнок 3.28 - Схема алгоритму копіювання з файлу в директорію
У даному алгоритмі визначається, чи відповідає копійований файл фільтру, при читанні, чи не відбулося ні яких помилок і в каталозі призначення, чи немає каталогу або без порожнього файлу з такою назвою, якщо умови виконані, то рекурсивно викликається метод копіювання. В іншому випадку об'єктом інспектором приймається рішення про повторення або перейменування файлу, в разі якщо такий вже існує.
На малюнку 3.25 показана схема алгоритму копіювання з файлу в файл.
Малюнок 3.29 - Схема алгоритму копіювання з файлу в файл
Копіювання відбувається по блочно, якщо блок менше двох мегабайт, то файл копіюється за одну ітерацію, якщо в процесі копіювання з'ясувалося, що не вистачає місця, то файл видаляється.
На малюнку 3.26 представлена ??схема алгоритму видалення.
Малюнок 3.30 - Схема алгоритму видалення
Якщо удаляеми об'єкт є директорією, то для кожного елемента директорії рекурсивно викликається алгоритм видалення, якщо файлом - видаляється.
3.4 Розробка підтримки користувальницьких сценаріїв
Для реалізації підтримки користувальницьких сценаріїв за основу взято проект з відкритим вихідним кодом TinyJS. Це проект інтерпретатора на основі стековой моделі распознавателя, без попередньої компіляції.
Проект дозволяє розширювати стандартну функціональність, вбудовуваними об'єктами і функціями.
Функції вбудовуються в інтерпретатор за коштами методу AddNative об'єкта CTinyJS.
У інтерпретатор вбудовано три функції.
Функція VolumeLocator () повертає об'єкт VolumeLocator для забезпечення доступу до файлових систем.
Функція Filter () повертає об'єкт Filter для забезпечення відсікання не потрібних файлів при виконанні файлових операції.
Функція print (string) виводить форматований текстовий рядок в стандартний потік введення/виводу.
Приклад виведення текстового рядка з переходом на наступний рядок - ( Hello, world !!! n );
У результаті роботи вищенаведеної рядка в стандартний потік введення виведення буде записаний рядок «Hello, world !!!" і спеціальним символом « n» буде здійснено перехід на наступний рядок.
Для того що б вмонтувати об'єкт в сценарій необхідно наслідувати його від класу TJSNativeObject і зареєструвати функцію методом registraitionFunction даного об'єкта, після чого функція буде доступна для звернення через змінну з типом даного об'єкта.
На малюнку 3.27 зображена схема успадкування класів інтерпретатора користувальницьких сценаріїв.
Малюнок 3.27 - Схема успадкування класів інтерпретатора користувальницьких сценаріїв
Об'єкт VolumeLocator застосовується для отримання доступу до файлових систем....