Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Para el código actual, incluya el encabezado <filesystem> estándar de C++17 y use el std::filesystem espacio de nombres para clases y funciones que manipulan y recuperan información sobre rutas de acceso, archivos y directorios. Compile con /std:c++17 o posterior.
Sintaxis
#include <filesystem> // C++17 standard header file name
using namespace std::filesystem;
Nota:
Nota histórica: Antes de que C++17 estandarizase <filesystem>, MSVC envió una implementación de prestandard independiente en el <experimental/filesystem> encabezado, que se quitó a partir de la versión 14.51 de MSVC Build Tools. Para obtener su documentación, consulte <experimental/filesystem>.
El <filesystem> encabezado admite sistemas de archivos para Microsoft Windows y POSIX.
Mientras que la mayoría de las funciones son comunes a ambos sistemas operativos, en este documento se identifican las diferencias. Por ejemplo:
- Windows admite varios nombres de raíz, como
c:o\\network_name. Un sistema de archivos consta de un bosque de árboles, cada uno con su propio directorio raíz (por ejemplo,c:\o\\network_name\), y cada uno con su propio directorio actual, para completar una ruta de acceso relativa (una que no es una ruta de acceso absoluta). - POSIX admite un único árbol, sin nombre de raíz, el directorio raíz único
/y un único directorio actual.
Otra diferencia importante es la representación nativa de rutas de acceso:
Windows usa una secuencia terminada en NULL de
wchar_t, codificada como UTF-16 (uno o varios elementos para cada carácter).POSIX usa una secuencia terminada en null de
char, codificada como UTF-8 (uno o varios elementos para cada carácter).Un objeto de
pathde clase almacena la ruta de acceso en forma nativa, pero admite la conversión sencilla entre esta forma almacenada y varias formas externas:- Una secuencia terminada en null de
char, codificada según la preferencia del sistema operativo. - Una secuencia terminada en null de
char, codificada como UTF-8. - Una secuencia terminada en null de
wchar_t, codificada según la preferencia del sistema operativo. - Una secuencia terminada en null de
char16_t, codificada como UTF-16. - Una secuencia terminada en null de
char32_t, codificada como UTF-32.
Las interconversiones entre estas representaciones se realizan, según sea necesario, mediante el uso de una o varias facetas
codecvt. Si no se especifica un objeto de configuración regional específica, estas facetas se obtienen de la configuración regional global.- Una secuencia terminada en null de
Otra diferencia es el detalle con el que cada sistema operativo permite especificar permisos de acceso a archivos o directorios:
- Windows registra si un archivo es de solo lectura o editable, un atributo que no tiene sentido en el caso de los directorios.
- POSIX registra si un archivo se puede leer, escribir o ejecutar (examinar, si es un directorio). Además, si se permite cada operación para el propietario, el grupo del propietario o para todos, además de algunos otros permisos.
Un aspecto común a ambos sistemas es la estructura impuesta en una ruta de acceso una vez superado el nombre de raíz. Para el nombre de la ruta de acceso c:/abc/xyz/def.ext:
- El nombre de raíz es
c:. - El directorio raíz es
/. - La ruta de acceso raíz es
c:/. - La ruta de acceso relativa es
abc/xyz/def.ext. - El elemento primario es
c:/abc/xyz. - El nombre de archivo es
def.ext. - La raíz es
def. - La extensión es
.ext.
Una diferencia menor es el separador preferido, entre la secuencia de directorios de una ruta de acceso. Ambos sistemas operativos le permiten escribir una barra diagonal /, pero, en algunos contextos, Windows prefiere una barra diagonal inversa \. La implementación almacena su separador preferido en el miembro de datos preferred_separator en path.
Por último, los objetos path tienen una característica importante: pueden usarse cada vez que se necesite un argumento filename en las clases definidas en el encabezado <fstream>.
Para obtener más información y ejemplos de código, vea Exploración del sistema de archivos (C++).
Clases
| NOMBRE | Descripción |
|---|---|
Clase directory_entry |
Describe un objeto devuelto por un directory_iterator o recursive_directory_iterator y que contiene una path. |
Clase directory_iterator |
Describe un iterador de entrada que establece una secuencia por los nombres de archivo en un directorio de sistema de archivos. |
Clase filesystem_error |
Clase base para las excepciones que se producen para notificar un error de sistema de bajo nivel. |
Clase path |
Define una clase que almacena un objeto de tipo de plantilla String adecuado para su uso como nombre de archivo. |
Clase recursive_directory_iterator |
Describe un iterador de entrada que establece una secuencia por los nombres de archivo en un directorio de sistema de archivos. El iterador también puede descender a subdirectorios. |
Clase file_status |
Ajusta un file_type. |
Estructuras
| NOMBRE | Descripción |
|---|---|
Estructura space_info |
Contiene información sobre un volumen. |
Funciones
Funciones <filesystem>
Operadores
Enumeraciones
| NOMBRE | Descripción |
|---|---|
copy_options |
Enumeración que se usa con copy_file y determina el comportamiento si ya existe un archivo de destino. |
directory_options |
Enumeración que especifica las opciones de los iteradores de directorio. |
file_type |
Enumeración de tipos de archivo. |
perm_options |
Enumera las opciones de la función permissions. |
perms |
Un tipo de máscara de bits que se usa para transmitir los permisos y las opciones de permisos. |