Работа с директориями в С#
Для изучения данного вопроса будем использовать проект решения предыдущего параграфа, как обычно, убрав коды обработчиков событий нажатия кнопок 1 и 2. Все примеры этого параграфа можно помещать в обработчике нажатия этих кнопок.
Класc Directory и его использвание
Класс Directory содержит набор статических методов, которые могут быть использованы для создания, копирования, перемещения, удаления и получения свойств папок.
DirectoryInfo CreateDirectory(string path); — cоздает директорию (поддиректорию), определенный path.
Возможные исключения:
— IOException — директория, указанная в path не существует.
— UnauthorizedAccessException — у пользователя нет права на создание.
— ArgumentException — путь является строкой нулевой длина, содержит только пробелы или содержит недопустимые символы, определенные в InvalidPathChars.
— ArgumentNullException — путь является нулевой ссылкой.
— PathTooLongException — путь превышает определенную системой максимальную длину.
— DirectoryNotFoundException — указанный путь не существует.
— NotSupportedException — попытка создания директории только с символом «:».
Delete(string path); Delete(string path,bool recursive); — удаляет директорию, определенную path, и ее содержание. Если в методе присутствует параметр recursive=false, то не пустая директория не удаляется.
Например, если у нас имеется директория A, а в ней аоддиректория B, то следующий код выведет в контрол TextBox
System.IO.IOException: Папка не пуста.:
Возможные исключения:
— IOException — директория, указанная в path не существует.
— UnauthorizedAccessException — у пользователя нет права на удаление.
— ArgumentException — путь является строкой нулевой длина, содержит только пробелы или содержит недопустимые символы, определенные в InvalidPathChars.
— ArgumentNullException — путь является нулевой ссылкой.
— PathTooLongException — путь превышает определенную системой максимальную длину.
— DirectoryNotFoundException — указанный путь не существует.
bool Exists(string path); — проверяет существование пути к файлу на диске. Метод возвращает false при отсутствии пути и true при его наличии.
DateTime GetCreationTime(string path); GetCreationTimeUtc(string path); — считывает дату и время создания директории, время соответственно для текущей зоны и UTC (Universal Time Coordinated) — значение всемирного скоординированного времени.
Результат выполнения кода:
Возможные исключения:
— IOException — директория, указанная в path не существует.
— UnauthorizedAccessException — у пользователя нет права на операцию с директорией.
— ArgumentException — путь является строкой нулевой длина, содержит только пробелы или содержит недопустимые символы, определенные в InvalidPathChars.
— ArgumentNullException — путь является нулевой ссылкой.
— PathTooLongException — путь превышает определенную системой максимальную длину.
— NotSupportedException — параметр пути находится в недопустимом формате.
string GetCurrentDirectory(); — возвращает текущую директорию к исполняемому файлу.
string[] GetDirectories(string path); string[] GetDirectories(string path,string pattern); — возвращает имена поддиректорий в указанной директории, отвечающие строке образцу pattern.
Возможные исключения:
— IOException — path есть имя файла.
— UnauthorizedAccessException — у пользователя нет соответствующего права.
— ArgumentException — путь является строкой нулевой длина, содержит только пробелы или содержит недопустимые символы, определенные в InvalidPathChars или pattern не содержит допустимый образец.
— ArgumentNullException — путь является нулевой ссылкой.
— PathTooLongException — путь превышает определенную системой максимальную длину.
— DirectoryNotFoundException — указанный путь не существует.
string GetDirectoryRoot(string path); — возвращает имя корневой директории для указанного пути.
Возможные исключения:
— UnauthorizedAccessException — у пользователя нет права на доступ к данной директории.
— ArgumentException — путь является строкой нулевой длина, содержит только пробелы или содержит недопустимые символы, определенные в InvalidPathChars.
— ArgumentNullException — путь является нулевой ссылкой.
— PathTooLongException — путь превышает определенную системой максимальную длину.
string[] GetFiles(string path,string pattern); — возвращает имена файлов в указанной директории и соответствующих образцу pattern.
Следующий код выведет все файлы с расширением .exe директории Windows:
Возможные исключения:
— UnauthorizedAccessException — у пользователя нет соответствующего права.
— ArgumentException — путь является строкой нулевой длина, содержит только пробелы или содержит недопустимые символы, определенные в InvalidPathChars или pattern не содержит допустимый образец.
— ArgumentNullException — путь является нулевой ссылкой.
— PathTooLongException — путь превышает определенную системой максимальную длину.
— DirectoryNotFoundException — указанный путь не существует.
GetFileSystemEntries(string path); GetFileSystemEntries(string path,string pattern); — возвращает имена всех файлов и поддиректорий в указанной директории, и отвечающие образцу pattern. Пример и возможные исключения аналогичны методу GetFiles.
DateTime GetLastAccessTime(string path); GetLastAccessTimeUtc(string path); — возвращает дату и время последнего обращенитя к файлу или директории, время соответственно для текущей зоны и UTC (Universal Time Coordinated) — значение всемирного скоординированного времени (аналогичный пример использования см. метод GetCreationTime).
Возможные исключения:
— IOException — директория, указанная в path не существует.
— UnauthorizedAccessException — у пользователя нет права на операцию с директорией.
— ArgumentException — путь является строкой нулевой длина, содержит только пробелы или содержит недопустимые символы, определенные в InvalidPathChars.
— ArgumentNullException — путь является нулевой ссылкой.
— PathTooLongException — путь превышает определенную системой максимальную длину.
— NotSupportedException — параметр пути находится в недопустимом формате.
DateTime GetLastWriteTime(string path); DateTime GetLastWriteTimeUtc(string path); — возвращает дату и время последней записи в файл или директорию, время соответственно для текущей зоны и UTC (Universal Time Coordinated) — значение всемирного скоординированного времени (аналогичный пример использования см. метод GetCreationTime).
string[] GetLogicalDrives(); — возвращает имена логических дисков на данном компьютере.
DirectoryInfo GetParent(path); — отыскивает родительскую директорию указанного пути, включая абсолютные и относительные пути.
Возможные исключения:
— IOException — директория, указанная в path только для чтения.
— UnauthorizedAccessException — у пользователя нет права на операцию.
— ArgumentException — путь является строкой нулевой длина, содержит только пробелы или содержит недопустимые символы, определенные в InvalidPathChars.
— ArgumentNullException — путь является нулевой ссылкой.
— PathTooLongException — путь превышает определенную системой максимальную длину.
— DirectoryNotFoundException — указанный путь не существует.
Move(string sourceDirName, string destDirName); — перемещает файл или директорию sourceDirName и его содержание к новому местоположению string destDirName.
Возможные исключения:
— IOException — при попытке перемещения директории на другой диск, или в существующую директорию, или если sourceDirName и destDirName есть одна и таже директория.
— UnauthorizedAccessException — у пользователя нет права на операцию.
— ArgumentException — один из путей является строкой нулевой длина, содержит только пробелы или содержит недопустимые символы, определенные в InvalidPathChars.
— ArgumentNullException — один из путей является нулевой ссылкой.
— PathTooLongException — один из путей является превышает определенную системой максимальную длину.
— DirectoryNotFoundException — один из путей не существует.
SetCreationTime(string path, DateTime creationTime); SetCreationTimeUtc(string path, DateTime creationTime); устанавливает дату и время создания для указанного файла или директории, время соответственно для текущей зоны и UTC (Universal Time Coordinated) — значение всемирного скоординированного времени.
Рассмотрим пример «постарения файла»:
Возможные исключения:
— FileNotFoundException — указанный путь не был найден.
— ArgumentException — путь является строкой нулевой длина, содержит только пробелы или содержит недопустимые символы, определенные в InvalidPathChars.
— ArgumentNullException — путь является нулевой ссылкой.
— PathTooLongException — путь превышает определенную системой максимальную длину.
— UnauthorizedAccessException — у пользователя нет права на операцию.
— ArgumentOutOfRangeException — время создания определяет значение вне диапазона дат или времен, разрешенных для этой операции.
SetLastAccessTime(string path,DateTime accesTime); SetLastAccessTimeUtc(string path, DateTime accesTime); — устанавливает дату и время последнего обращенитя к файлу или директории, время соответственно для текущей зоны и UTC (Universal Time Coordinated) — значение всемирного скоординированного времени.
Возможные исключения и пример аналогичны методу SetCreationTime.
SetLastWriteTime(string path,DateTime writeTime); SetLastWriteTimeUtc(string path, DateTime writeTime); — устанавливает дату и время последней записи в файл или директорию, время соответственно для текущей зоны и UTC (Universal Time Coordinated) — значение всемирного скоординированного времени.
Возможные исключения и пример аналогичны методу SetCreationTime.
SetCurrentDirectory(string path); — устанавливает текущую рабочую директорию приложения в указанную переменной path.
Возможные исключения:
— IOException — при ошибках ввода вывода.
— ArgumentException — путь является строкой нулевой длина, содержит только пробелы или содержит недопустимые символы, определенные в InvalidPathChars.
— ArgumentNullException — путь является нулевой ссылкой.
— PathTooLongException — путь превышает определенную системой максимальную длину.
— SecurityException — у пользователя нет прав обращения к данной директории.
— FileNotFoundException — указанный путь не существует.