ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 13.08.2024
Просмотров: 1103
Скачиваний: 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#. Урок 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#. Урок 35. Введение в атрибуты
Основы c#. Урок 36. Пример пользовательского атрибута.
Основы c#. Урок 37. Параметры командной строки
Основы c#. Урок 38. Метод Main в отдельном классе
Основы c#. Урок 39. Форматированный вывод
Основы c#. Урок 40. Класс System.Object
Основы c#. Урок 41. Методы класса System.Object
Основы c#. Урок 42. Переопределяем методы класса System.Object
Основы c#. Урок 44. Модификаторы доступа
Основы c#. Урок 45. Ссылка на текущий экземпляр класса (this)
Основы c#. Урок 47. Работаем со специальными папками
Основы c#. Урок 48. Получаем список всех дисков
Основы c#. Урок 49. Ввод/вывод в c# (System.Io)
Основы c#. Урок 50. Классы для работы с папками и файлами
Основы c#. Урок 51. Класс Directory
Основы c# Урок 53. Класс FileSystemInfo
Основы c# Урок 54. Класс DirectoryInfo
Основы c# Урок 55. Перечисление FileAttributes
// Получение имен всех подпапок.
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 выводит имена всех папок, рекурсивно вызывая сам себя. В качестве параметра он берет имя папки, для которой мы хотим вывести имена всех ее подпапок.