Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Лістинг 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

Значення Опис
Archived Звичайний файл, доступний для копіювання і видалення
Compressed Стислий файл
Device Зарезервовано для майбутнього використання
Directory Вкладена тека
Encrypted Файл зашифрований (якщо мова йде про файлі) або всі включені у теку файли зашифровані (якщо мова йде про теці)
Hidden Прихований файл
Normal Звичайний файл, для якого не можуть бути встановлені никакие інші атрибути
NotContentlndexed Файл не може бути індексований службою індексації контексту операційної системи
Offline Файл не підключений, і його дані в даний час недоступні I
Readonly Файл, призначений тільки для читання
ReparsePoint Файл містить крапку репера, тобто блок даних, ассоциированных з іншими файлом або текою
SparseFile «Рихлий» файл, велика частина якого містить нулі
System Системний файл, який може використовувати тільки операци- I онная система
Temporary Тимчасовий файл I

Елементи перерахувань в С# можуть зв'язуватися з будь-якими цілочисельними константами. Перерахування FileAttributes зв'язується з послідовністю констант 1, 2, 4, 8 і т. д., тобто файловим атрибутом може бути комбінація перерахованих значень. Використовувана в прикладі перевірка блокує обробку будь якої теки:

 

if ((FileAttr & FileAttributes.Directory) == FileAttributes.Directory) continue;

 

У вибраній для копіювання теці немає вкладених тек, тому вказана перевірка не потрібна. Але на практиці для копіювання не тільки файлів, але і всіх вкладених тек замість оператора continue слід вставити код, що реалізовує рекурсивний виклик процедури обходу дерева каталогів (тек).


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал