Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Лістинг 19.1. Копіювання теки
using System; using System.Collections.Generic; using System.Text; using System.IO; namespace CopyDir { class Program { static void Main(string[] args) { string FromDir = @" d: \Program Files\Microsoft Visual Studio 8\ReportViewer"; // Звідки копіюємо string ToDir = @" d: \ReportViewer\"; // Куди копіюємо if (! Directory.Exists(ToDir)) // Тека ToDir існує? Directory.CreateDirectory(ToDir); // -Нет. Створюємо її string[] Files; // Приймач імен файлів - динамічний масив // Отримуємо всі елементи копійованої теки: Files = Directory.GetFileSystemEntries(FromDir); // Цикл копіювання: for (int k = 0; k < Files.Length; k++) { // Отримуємо ім'я чергового файлу: string FromFile = Path.GetFileName(Files[k]); // Отримуємо його атрибути: FileAttributes FileAttr = File.GetAttributes(Files[k]); if ((FileAttr & FileAttributes.Directory) == FileAttributes.Directory) //Это тека? continue; // -Да. Пропускаємо її Console.WriteLine(FromFile); string ToFile = ToDir + FromFile; File.Copy(Files[k], ToFile, true); // Копіюємо файл } Console.ReadLine(); } } } } Нагадаю, що практично у всіх сучасних операційних системах (і в Windows зокрема) у файловій системі використовуються так звані таблиці розміщення файлів ( File Allocation Tables, FAT). У цих таблицях указуються файли кореневого каталога і вкладені теки верхнього рівня. У FAT кожної вкладеної теки, у свою чергу, указуються файли і вкладені теки. У кожному рядку FAT крім імені файлу (теки) указуються також додаткові відомості: початковий кластер розташування файлу (теки), дата створення і зокрема так звані файлові атрибути, які задаються перерахуванням System. 10. FileAttributes. Значення цього перерахування вказані в табл. 19.3. Таблиця 19.3. Значення перерахування FileAttributes
Елементи перерахувань в С# можуть зв'язуватися з будь-якими цілочисельними константами. Перерахування FileAttributes зв'язується з послідовністю констант 1, 2, 4, 8 і т. д., тобто файловим атрибутом може бути комбінація перерахованих значень. Використовувана в прикладі перевірка блокує обробку будь якої теки:
if ((FileAttr & FileAttributes.Directory) == FileAttributes.Directory) continue;
У вибраній для копіювання теці немає вкладених тек, тому вказана перевірка не потрібна. Але на практиці для копіювання не тільки файлів, але і всіх вкладених тек замість оператора continue слід вставити код, що реалізовує рекурсивний виклик процедури обходу дерева каталогів (тек).
|