ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 13.08.2024

Просмотров: 1111

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Основы c#. Урок 1. Что такое c#?

Основы c#. Урок 2. Что такое net Runtime?

Основы c#. Урок 3. Первая программа на c#

Основы c#. Урок 4. Переменные языка c#

Основы c#. Урок 5. Логические операторы

Основы c#. Урок 6. Массивы в c#

Основы c#. Урок 7. Операторы if и switch

Основы c#. Урок 8. Циклы for и foreach

Основы c#. Урок 9. Цикл while

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

Основы c#. Урок 11. Конструкторы классов

Основы c#. Урок 12. Наследование

Основы c#. Урок 13. Запись в экземпляр базового класса экземпляра производного

Основы c#. Урок 14. Вложенные классы

Основы c#. Урок 15. Перегрузка бинарных операторов

Основы c#. Урок 16. Перегрузка унарных операторов

Основы c#. Урок 17. Область видимости

Основы c#. Урок 18. Виртуальные функции

Основы c#. Урок 19. Абстрактные классы

Основы c#. Урок 20. Запрещение наследования или модификатор sealed

Основы c#. Урок 21. Статические переменные

Основы c#. Урок 22. Статические методы класса

Основы c#. Урок 23. Статические конструкторы

Основы c#. Урок 24. Закрытые конструкторы или классы без экземпляров

Основы c#. Урок 25. Передача параметров переменой длины

Основы c#. Урок 26. Строки (класс System.String)

Основы c#. Урок 27. Строки (класс StringBuilder)

Основы c#. Урок 28. Передача параметров по ссылке и по значению (ref и out)

Основы c#. Урок 29. Пример передачи по ссылке

Основы c#. Урок 30. Перегрузка

Основы c#. Урок 31. Функции класса System.Array

Основы c#. Урок 33. События

Основы c#. Урок 35. Введение в атрибуты

Основы c#. Урок 36. Пример пользовательского атрибута.

Основы c#. Урок 37. Параметры командной строки

Основы c#. Урок 38. Метод Main в отдельном классе

Основы c#. Урок 39. Форматированный вывод

Основы c#. Урок 40. Класс System.Object

Основы c#. Урок 41. Методы класса System.Object

Основы c#. Урок 42. Переопределяем методы класса System.Object

Основы c#. Урок 43. Константы

Основы c#. Урок 44. Модификаторы доступа

Основы c#. Урок 45. Ссылка на текущий экземпляр класса (this)

Основы c#. Урок 47. Работаем со специальными папками

Основы c#. Урок 48. Получаем список всех дисков

Основы c#. Урок 49. Ввод/вывод в c# (System.Io)

Основы c#. Урок 50. Классы для работы с папками и файлами

Основы c#. Урок 51. Класс Directory

Основы c# Урок 52. Класс File

Основы c# Урок 53. Класс FileSystemInfo

Основы c# Урок 54. Класс DirectoryInfo

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

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

Основы c# Урок 57. Пример: получение имен всех подпапок

// Получение имен всех подпапок.

DirectoryInfo [] ds = di.GetDirectories();

foreach(DirectoryInfo d in ds)

{

MessageBox.Show(d.Name);

}

// Удаление папки и всех подпапок.

di.Delete(true);

Обратите внимание, что отдельного метода для переименования нет - для переименования мы используем метод MoveTo, в качестве параметра которого мы указываем новое имя.

Также обратите внимание, что в методе Delete для удаления вместе с папкой всех ее подпапок мы должны указать параметр true. Если же мы укажем параметр false или ничего не укажем, то возникнет соответствующее исключение.


Основы 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 связывается файловый поток, и файл считается используемым приложением. Для освобождения файла мы и должны закрыть этот фаловый поток.


Основы c# Урок 57. Пример: получение имен всех подпапок

Вот практический пример - получение имен всех подпапок в указанной папке:

using System;

using System.IO;

class AllFolders

{

public static void WriteAllFolders(String path)

{

//Получаем имена всех папок в папке path.

String[] di=Directory.GetDirectories(path);

//Для каждой папки выводим ее имя и имена всех подпапок.

foreach (String s in di)

{

Console.WriteLine(s);

WriteFolders(s);

}

}

}

//Класс для тестирования.

class App

{

static void Main()

{

//Выводим имена всех подпапок.

AllFolders.WriteAllFolders("D:\\_progs");

}

}

Тут статический метод WriteAllFolders класса AllFolders выводит имена всех папок, рекурсивно вызывая сам себя. В качестве параметра он берет имя папки, для которой мы хотим вывести имена всех ее подпапок.