Как проверить наличие папки c
Для работы с каталогами в пространстве имен System.IO предназначены сразу два класса: Directory и DirectoryInfo .
Класс Directory
Статический класс Directory предоставляет ряд методов для управления каталогами. Некоторые из этих методов:
CreateDirectory(path) : создает каталог по указанному пути path
Delete(path) : удаляет каталог по указанному пути path
Exists(path) : определяет, существует ли каталог по указанному пути path. Если существует, возвращается true , если не существует, то false
GetCurrentDirectory() : получает путь к текущей папке
GetDirectories(path) : получает список подкаталогов в каталоге path
GetFiles(path) : получает список файлов в каталоге path
GetFileSystemEntries(path) : получает список подкаталогов и файлов в каталоге path
Move(sourceDirName, destDirName) : перемещает каталог
GetParent(path) : получение родительского каталога
GetLastWriteTime(path) : возвращает время последнего изменения каталога
GetLastAccessTime(path) : возвращает время последнего обращения к каталогу
GetCreationTime(path) : возвращает время создания каталога
Класс DirectoryInfo
Данный класс предоставляет функциональность для создания, удаления, перемещения и других операций с каталогами. Во многом он похож на Directory, но не является статическим.
Для создания объекта класса DirectoryInfo применяется конструктор, который в качестве параметра принимает путь к каталогу:
Основные методы класса DirectoryInfo :
Create() : создает каталог
CreateSubdirectory(path) : создает подкаталог по указанному пути path
Delete() : удаляет каталог
GetDirectories() : получает список подкаталогов папки в виде массива DirectoryInfo
GetFiles() : получает список файлов в папке в виде массива FileInfo
MoveTo(destDirName) : перемещает каталог
Основные свойства класса DirectoryInfo :
CreationTime : представляет время создания каталога
LastAccessTime : представляет время последнего доступа к каталогу
LastWriteTime : представляет время последнего изменения каталога
Exists : определяет, существует ли каталог
Parent : получение родительского каталога
Root : получение корневого каталога
Name : имя каталога
FullName : полный путь к каталогу
Directory или DirectoryInfo
Как видно из функционала, оба класса предоставляют похожие возможности. Когда же и что использовать? Если надо совершить одну-две операции с одним каталогом, то проще использовать класс Directory. Если необходимо выполнить последовательность операций с одним и тем же каталогом, то лучше воспользоваться классом DirectoryInfo. Почему? Дело в том, что методы класса Directory выполняют дополнительные проверки безопасности. А для класса DirectoryInfo такие проверки не всегда обязательны.
Посмотрим на примерах применение этих классов
Получение списка файлов и подкаталогов
Обратите внимание на использование слешей в именах файлов. Либо мы используем двойной слеш: «C:\\» , либо одинарный, но тогда перед всем путем ставим знак @: @»C:\Program Files»
Аналогичный пример с DirectoryInfo:
Фильтрация папок и файлов
Методы получения папок и файлов позволяют выполнять фильтрацию. В качестве фильтра в эти методы передается шаблон, который может содержать два плейсхолдера: * или символ-звездочка (соответствует любому количеству символов) и ? или вопросительный знак (соответствует одному символу)
Например, найдем все папки, которые начинаются на «books»:
Или получим все файлы с расширением «.exe»:
Создание каталога
Вначале проверяем, а нету ли такой директории, так как если она существует, то ее создать будет нельзя, и приложение выбросит ошибку. В итоге у нас получится следующий путь: «C:\SomeDir\program\avalon»
Аналогичный пример с классом Directory:
Получение информации о каталоге
Удаление каталога
Если мы просто применим метод Delete к непустой папке, в которой есть какие-нибудь файлы или подкаталоги, то приложение нам выбросит ошибку. Поэтому нам надо передать в метод Delete дополнительный параметр булевого типа, который укажет, что папку надо удалять со всем содержимым. Кроме того, перед удалением следует проверить наличие удаляемой папки, иначе приложение выбросит исключение:
Перемещение каталога
При перемещении надо учитывать, что новый каталог, в который мы хотим перемесить все содержимое старого каталога, не должен существовать.
Перемещение каталога в рамках одной папки (как в примере выше) фактически аналогично переименованию папки
Check if a folder exist in a directory and create them using C#
How can I check if directory C:/ contains a folder named MP_Upload , and if it does not exist, create the folder automatically?
I am using Visual Studio 2005 C#.
![]()
6 Answers 6
This should help:
![]()
Directory.CreateDirectory does exactly what you want: It creates the directory if it does not exist yet. There’s no need to do an explicit check first.
Any and all directories specified in path are created, unless they already exist or unless some part of path is invalid. The path parameter specifies a directory path, not a file path. If the directory already exists, this method does nothing.
(This also means that all directories along the path are created if needed: CreateDirectory(@»C:\a\b\c\d») suffices, even if C:\a does not exist yet.)
Как проверить наличие папки c
Checking the presence of a directory or a file is one of the most common operations performed by a file system in an Operating System. Most programming languages offer some level of file system accessibility in form of library functions. In this article, you will learn how to test a file or directory that exists in C++.
Note: stat function present in the sys/stat.h header file would be used in the program. The function is not a part of the C++ standard library.
Checking/Testing the presence of a directory
stat is a pre-defined function present in the sys/stat.h header file. The function takes a path and a structure as arguments in which the metadata associated with the file/directory if present would be stored. The function returns the value of 0 if the path is a valid one. For demonstration we would be testing the presence of the following directory:

Example:
Output:
Explanation: Firstly, the path to the directory is stored in the dir pointer variable. Then the empty structure is initialized with the format that is present in the stat header file. This would store the metadata. Then, inside the if condition where a call to the stat function is made. If the path is valid i.e. the file/directory exists, then the output would be 0, otherwise, it would be non-zero. Hence if the condition would be true if the path is valid, otherwise the else block would be executed, displaying The Path is invalid! message.
Checking/Testing the presence of a file
The aforementioned process could be used to identify the presence of a file inside a directory as well. With some minor changes to the prior code, the presence of files could also be tested. Therefore, in this example, the attempt to detect the following file would be made
Проверьте, существует ли папка в каталоге, и создайте их, используя C #
Как проверить, если каталог C:/ содержит папку с именем MP_Upload , а если она не существует, создайте папку автоматически?
Я использую Visual Studio 2005 С#.
6 ответов
Это должно помочь:
Directory.CreateDirectory делает именно то, что вы хотите: он создает каталог, если он еще не существует. Вначале не нужно делать явные проверки.
Все каталоги, указанные в пути, создаются, если они уже не существуют или если некоторая часть пути недействительна. Параметр path указывает путь к каталогу, а не путь к файлу. Если каталог уже существует, этот метод ничего не делает.
(Это также означает, что при необходимости создаются все каталоги вдоль пути: CreateDirectory(@»C:\a\b\c\d») , даже если C:\a еще не существует.)