Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы C#.doc
Скачиваний:
58
Добавлен:
10.02.2015
Размер:
430.59 Кб
Скачать

Основы c# Урок 55. Перечисление FileAttributes

С помощью перечисления FileAttributes задаются атрибуты для файлов и папок. Вот наиболее важные значения этого перечисления:

Directory- определяет, не есть ли объект папка.

Hidden- определяет, не является ли объект (папка или файл) скрытым.

ReadOnly- определяет, не имеет ли файл атрибут "только для чтения".

Normal- определяет, что для файла не установлены любые другие атрибуты. Данный элемент перечисления не может комбинироваться с другими элементами этого же перечисления.

System- определяет, не являетя ли файл системным.

Archive- определяет, не является ли файл архивным.

Compressed- определяет, не является ли файл сжатым файлом.

А вот использование этого перечисления:

// Создание объекта DirectoryInfo.

DirectoryInfo di = new DirectoryInfo("c:\\tmp\\tmp2");

// Присваиваем атрибут "Только для чтения".

di.Attributes |= FileAttributes.Hidden;

// Получаем атриубты файла.

FileAttributes fi = di.Attributes;

// Выясняем, есть ли у папки атрибут Hidden.

if((fi & FileAttributes.Hidden) == FileAttributes.Hidden)

{

Console.WriteLine("Hidden");

}

// Выясняем, есть ли у папки атрибут ReadOnly.

if((fi & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)

{

Console.WriteLine("ReadOnly");

}

Обратите внимание на то, как мы определяем присутствие некоторого атрибута:

...

if((fi & FileAttributes.Hidden) == FileAttributes.Hidden)...

Если мы напишем просто

...

if(fi == FileAttributes.Hidden) // Логический ошибка!

...

то наш фрагмент выдаст правильный результат только тогда, когда атрибут Hidden будет у нашей папки единственным. А так как обычно атрибутов несколько, то надо использовать первый вариант.

Основы c# Урок 56. Класс FileInfo

Можно считать, что класс FileInfo представляет из себя файл, находящийся на жестком диске. С помощью этого класса можно производить стандарные операции с файлом - переименование, перемещение, удаление, создание и др. Кроме того, можно получить значения характеристик файла (время последнего доступа, размер и др.), а также атрибуты файла (скрытый, системный и др.).

Вот пример работы с этим классом:

// Читаем информацию о файле.

FileInfo fi = new FileInfo(@"C:\tmp\1.txt");

// Выводим информацию о файле.

// Полное имя.

Console.WriteLine(fi.FullName);

// Только имя файла.

Console.WriteLine(fi.Name);

// Полный путь без имени файла.

String fullPath = fi.DirectoryName;

Console.WriteLine(fullPath);

// Переименовываем файл (путем перемещения

// в эту же папку под другим именем.

fi.MoveTo(fullPath + @"\qqq.txt");

// Создаем новый файл.

fi = new FileInfo(@"C:\tmp\2.txt");

FileStream fs = fi.Create();

// Закрываем поток, связанный с файлом.

fs.Close();

// Показываем время создания.

Console.WriteLine("Creation {0}", fi.CreationTime);

// Проверяем, существует ли файл.

if(fi.Exists)

{

// Удаляем файл.

fi.Delete();

}

Обратите внимание на строки:

...

// Закрываем поток, связанный с файлом.

fs.Close();

...

Если ее не добавить, то несколькими строчками ниже мы не сможем удалить наш файл. Дело в том, что с нашим файлом в результате вызова метода Create связывается файловый поток, и файл считается используемым приложением. Для освобождения файла мы и должны закрыть этот фаловый поток.