Найважливіші члени класів FileSystemInfo, FileInfo та DirectoryInfo
Час створення об'єкта. Властивість доступна для читання та запису
Логічна ознака існування файлу чи каталогу
Повне ім'я каталогу або файлу
Дата/час останнього звернення до об'єкта. Властивість доступна для читання та запису
Час останнього запису об'єкт. Властивість доступна для читання та запису
Для файлів – ім'я файлу. Для каталогів ім'я останнього каталогу в ієрархії, якщо це можливо. В іншому випадку повертається повне ім'я
Оновлює стан об'єкта
У табл. 9.5 та 9.6 перераховані найважливіші методи класу DirectoryInfo та методи класу Filelnfo, які не мають безпосереднього відношення до потоків (ця тема буде розглядатися пізніше).
Таблиця 9.5. Основні методи класу DirectoryInfo
Повертає масив об'єктів Filelnfo для файлів поточного каталогу
Таблиця 9.6. Члени класу Filelnfo, які не повертають потоків
CopyTo(ByVal destFileName As String)
Ідея виділення загальної функціональності в абстрактний базовий клас виглядає цілком логічно, проте в даному випадку вона реалізована не найкращим чином. Наприклад, світло Length присутній у файлі FileInfo, але не підтримується в FileSystemlnfo, тому для обчислення розміру дерева каталогів доводиться вдаватися до послуг іншого об'єкта - а саме викликати метод Size об'єкта Folder, що входить в модель FileSystemObject. Ця модель вперше була представлена в VBScript, тому рішення доводиться включати посилання на бібліотеку сценарної підтримки на базі СОМ.
Як згадувалося у вступній частині, однією з цілей проектування класу System. I0.Stream було абстрагування примітивних операцій під час роботи зі потоками байтів. Відповідно до цієї концепції кожнаконкретна реалізація класу Stream має надати свої версії наступних методів:
- Read – метод читання даних із потоку. Іноді зводиться до найпростішого читання одного байта, але у багатьох похідних класах використовуються складні методи читання даних великими порціями.
- Write – метод запису даних у потік. Як і попередній метод, може зводитись до найпростішого запису одного байта, але може задіяти і фрагменти даних більшого розміру.
Втім, цим можливості не обмежуються. Крім простого переміщення від першого байта до останнього, реалізація класу Stream може підтримувати й інші способи - наприклад, переміщення у зворотному напрямку або безпосередній перехід до заданої позиції в потоці. Таке можливе для файлових потоків, але немає сенсу (отже, і реалізується) для потоків, заснованих на мережевих з'єднаннях. Властивість CanSeek дозволяє дізнатися, чи потік підтримує довільний доступ. Якщо властивість дорівнює True, отже, у похідному класі підтримуються реалізації методів Seek і SetLength, і навіть властивостей Position і Length.
У реалізації методу Seek зазвичай використовуються три значення (Begin, Current і End), що входять у зручний тип SeekOrigin, що перераховується.
У табл. 9.7 перераховано основні методи абстрактного класу Stream, зміст яких має зберегтися й у похідних класах.
Таблиця 9.7. Основні методи класу Stream