русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Робота з каталогами і файлами


Дата додавання: 2015-01-08; переглядів: 1104.


 

У просторі імен System.IO є чотири класи, призначені для роботи з фізичними файлами і структурою каталогів на диску: Directory, File, DirectoryInfo і FileInfo. З їх допомогою можна виконувати створення, видалення, переміщення файлів і каталогів, а також набуття їх властивостей.

Класи Directory і File реалізують свої функції через статичні методи. DirectoryInfo і FileInfo володіють схожими можливостями, але вони реалізуються шляхом створення об'єктів відповідних класів. Класи DirectoryInfo і FileInfo походять від абстрактного класу FilesystemInfo, який забезпечує їх базовими властивостями, описаними в таблиці 11.10.

 

Таблиця 11.10

Властивості класу FileSystemInfo

 

Властивість Опис
Attributes Отримати або встановити атрибути для даного об'єкту файлової системи. Для цієї властивості використовуються значення перелічення FileAttributes
CreationTime Отримати або встановити час створення об’єкту файлової системи
Exists Визначити, чи існує даний об'єкт файлової системи
Extension Отримати розширення файлу
FullName Повернути ім'я файлу або каталога з вказівкою повного шляху
LastAccessTime Отримати або встановити час останнього звернення до об'єкту файлової системи
LastWriteTime Отримати або встановити час останнього внесення змін в об'єкт файлової системи
Name Повернути ім'я файлу. Ця властивість доступна тільки для читання. Для каталогів повертає ім'я останнього каталога в ієрархії.

 

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

 

Таблиця 11.11

Елементи класу DirectoryInfo

 

Елемент Опис
Create, CreateSubDirectory Створити каталог або підкаталог по вказаному шляху у файловій системі
Delete Видалити каталог зі всім його вмістом
GetDirectories Повернути масив рядків, що представляють всі підкаталоги
GetFiles Отримати файли в поточному каталозі у вигляді масиву об'єктів класу FileInfo
MoveTo Перемістити каталог і весь його вміст на нову адресу у файловій системі
Parent Повернути батьківський каталог

 

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

 

Лістинг 11.9. Використання класу DirectorInfo

using System;

using System.IO;

namespace examp83

{ class Class1

{ static void DirInfo( DirectoryInfo di)

{

// Виведення інформації про каталог

Console.WriteLine("===== Directory Info =====" );

Console.WriteLine("Full Name: " + di.FullName );

Console.WriteLine("Name: " + di.Name );

Console.WriteLine("Parent: " + di.Parent );

Console.WriteLine("Creation: " + di.CreationTime );

Console.WriteLine("Attributes: "+ di.Attributes );

Console.WriteLine("Root: " + di.Root );

Console.WriteLine("===========================");

}

 

static void Main()

{

DirectoryInfo di1 = new DirectoryInfo( @"c:\MyDir" );

DirectoryInfo di2 = new DirectoryInfo( @"c:\MyDir\temp" );

 

try

{

// Створити каталоги

di1.Create();

di2.Create();

// Вивести інформацію про каталоги

DirInfo(di1);

DirInfo(di2);

// Спробувати видалити каталог

Console.WriteLine( " Спроба видалити {0}.", di1.Name );

di1.Delete(true);

}

catch ( Exception )

{

Console.WriteLine( " Спроба не вдалася " );

}

}

}

}

 

Результат роботи програми:

===== Directory Info =====

Full Name: c:\MyDir

Name: MyDir Parent:

Creation: 30.04.2006 17:14:44

Attributes: Directory

Root: c:\

=====================

===== Directory Info =====

Full Name: c:\MyDir\temp

Name: temp Parent: MyDir

Creation: 30.04.2006 17:14:44

Attributes: Directory

Root: c:\

=====================

Спроба видалити MyDir.

Спроба не вдалася

 

Каталог не порожній, тому спроба його видалення не вдалася. Втім, якщо використовувати перевантажений варіант методу Delete з одним параметром, задаючим режим видалення, можна видалити і непорожній каталог:

 

dil.Delete( true ); // видаляє непорожній каталог

 

Зверніть увагу на властивість Attributes. Деякі її можливі значення, задані в переліченні FileAttributes, приведені в таблиці 11.12.

 

Таблиця 11.12

Деякі значення перелічення FileAttributes

 

Значення Опис
Archive Використовується додатками при виконанні резервного копіювання, а в деяких випадках - при видаленні старих файлів
Compressed Файл є стислим
Directory Об'єкт файлової системи є каталогом
Encrypted Файл є зашифрованим
Hidden Файл є прихованим
Normal Файл знаходиться в звичайному стані, і для нього встановлені будь-які інші атрибути. Цей атрибут не може використовуватися з іншими атрибутами
Offline Файл, розташований на сервері, кеширований в сховищі на клієнтському комп'ютері. Можливо, що дані цього файлу вже застаріли
Readonly Файл доступний тільки для читання
System Файл є системним

 

Лістинг 11.10 демонструє використання класу FileInfo для копіювання всіх файлів з розширенням jpg з каталога d:\foto в каталог d:\temp. Метод Exists дозволяє перевірити, чи існує початковий каталог.

using System;

using System.IO;

namespace examp84

{

class Class1

{

static void Main()

{

try

{

string DestName = @"d:\fot";

DirectoryInfo dest = new DirectoryInfo(DestName);

dest.Create(); // створення цільового каталога

DirectoryInfo dir = new DirectoryInfo( @"d:\temp" );

if ( !dir.Exists ) // перевірка існування каталога

{

Console.WriteLine("Каталог " +

dir.Name + " не існує" );

return;

}

FileInfo[] files = dir.GetFiles( "*.jpg" ); // список файлів

foreach (FileInfo f in files)

f.CopyTo( dest + "1.txt" ); // копіювання файлів

Console.WriteLine( "Скопійовано " +

files.Length + " jpg-файлов" );

Console.ReadLine();

}

catch (Exception e )

{

Console.WriteLine( "Error: " + e.Message );

Console.ReadLine();

}

}

}

}

Використання класів Fi1e і Directory аналогічно, за винятком того, що їх методи є статичними і, отже, не вимагають створення об'єктів.

 


<== попередня лекція | наступна лекція ==>
Двійкові потоки | Рекомендації по програмуванню


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн