Namespaces
Variants

Filesystem library (since C++17)

From cppreference.net

La biblioteca Filesystem proporciona facilidades para realizar operaciones en sistemas de archivos y sus componentes, tales como rutas, archivos regulares y directorios.

La biblioteca de sistema de archivos fue desarrollada originalmente como boost.filesystem , fue publicada como la especificación técnica ISO/IEC TS 18822:2015 , y finalmente incorporada a ISO C++ a partir de C++17. La implementación de boost está actualmente disponible en más compiladores y plataformas que la biblioteca de C++17.

Las facilidades de la biblioteca del sistema de archivos pueden no estar disponibles si el sistema de archivos jerárquico no es accesible para la implementación, o si no proporciona las capacidades necesarias. Algunas características pueden no estar disponibles si no son compatibles con el sistema de archivos subyacente (por ejemplo, el sistema de archivos FAT carece de enlaces simbólicos y prohíbe múltiples enlaces físicos). En esos casos, se deben reportar errores.

El comportamiento es undefined si las llamadas a funciones en esta biblioteca introducen una file system race , es decir, cuando múltiples hilos, procesos o computadoras intercalan acceso y modificación al mismo objeto en un sistema de archivos.

Contenidos

Definiciones de toda la biblioteca

  • file : un objeto del sistema de archivos que contiene datos, puede ser escrito, leído, o ambas cosas. Los archivos tienen nombres, atributos, uno de los cuales es el tipo de archivo:
  • directory : un archivo que actúa como contenedor de entradas de directorio, que identifican otros archivos (algunos de los cuales pueden ser otros directorios anidados). Al discutir un archivo particular, el directorio en el que aparece como entrada es su parent directory . El directorio padre puede representarse mediante la ruta relativa ".." .
  • regular file : una entrada de directorio que asocia un nombre con un archivo existente (es decir, un hard link ). Si se admiten múltiples enlaces físicos, el archivo se elimina después de que se elimine el último enlace físico a él.
  • symbolic link : una entrada de directorio que asocia un nombre con una ruta, que puede existir o no.
  • otros tipos especiales de archivos: block , character , fifo , socket .
  • nombre de archivo : una cadena de caracteres que nombra un archivo. Los caracteres permitidos, sensibilidad a mayúsculas y minúsculas, longitud máxima y los nombres no permitidos están definidos por la implementación. Los nombres "." (punto) y ".." (punto-punto) tienen significado especial a nivel de biblioteca.
  • ruta : secuencia de elementos que identifica un archivo. Comienza con un root-name opcional (ej. "C:" o "//server" en Windows), seguido por un root-directory opcional (ej. "/" en Unix), seguido por una secuencia de cero o más nombres de archivo (todos excepto el último deben ser directorios o enlaces a directorios). El formato nativo (ej. qué caracteres se usan como separadores) y la codificación de caracteres de la representación en cadena de una ruta (el pathname ) está definido por la implementación; esta biblioteca proporciona una representación portable de rutas.
  • ruta absoluta : una ruta que identifica sin ambigüedad la ubicación de un archivo.
  • ruta canónica : una ruta absoluta que no incluye enlaces simbólicos, "." o elementos ".." .
  • ruta relativa : una ruta que identifica la ubicación de un archivo en relación con alguna ubicación en el sistema de archivos. Los nombres de ruta especiales "." (punto, "directorio actual") y ".." (punto-punto, "directorio padre") son rutas relativas.

Clases

Definido en el encabezado <filesystem>
Definido en el espacio de nombres std::filesystem
(C++17)
representa una ruta
(clase)
una excepción lanzada en errores del sistema de archivos
(clase)
una entrada de directorio
(clase)
un iterador a los contenidos del directorio
(clase)
un iterador a los contenidos de un directorio y sus subdirectorios
(clase)
representa el tipo de archivo y permisos
(clase)
(C++17)
información sobre el espacio libre y disponible en el sistema de archivos
(clase)
(C++17)
el tipo de un archivo
(enum)
(C++17)
identifica los permisos del sistema de archivos
(enum)
especifica la semántica de las operaciones de permisos
(enum)
especifica la semántica de las operaciones de copia
(enum)
opciones para iterar contenidos de directorio
(enum)
representa valores de tiempo de archivo
(typedef)

Funciones no miembro

Definido en el encabezado <filesystem>
Definido en el espacio de nombres std::filesystem
(C++17)
compone una ruta absoluta
(función)
compone una ruta canónica
(función)
compone una ruta relativa
(función)
(C++17)
copia archivos o directorios
(función)
(C++17)
copia contenidos de archivos
(función)
copia un enlace simbólico
(función)
crea un nuevo directorio
(función)
crea un enlace físico
(función)
crea un enlace simbólico
(función)
devuelve o establece el directorio de trabajo actual
(función)
(C++17)
verifica si la ruta hace referencia a un objeto del sistema de archivos existente
(función)
(C++17)
comprueba si dos rutas se refieren al mismo objeto del sistema de archivos
(función)
(C++17)
devuelve el tamaño de un archivo
(función)
devuelve el número de enlaces físicos que referencian al archivo específico
(función)
obtiene o establece la hora de la última modificación de datos
(función)
modifica los permisos de acceso al archivo
(función)
obtiene el destino de un enlace simbólico
(función)
(C++17) (C++17)
elimina un archivo o directorio vacío
elimina un archivo o directorio y todo su contenido, recursivamente
(función)
(C++17)
mueve o renombra un archivo o directorio
(función)
cambia el tamaño de un archivo regular mediante truncamiento o relleno con ceros
(función)
(C++17)
determina el espacio libre disponible en el sistema de archivos
(función)
(C++17) (C++17)
determina los atributos del archivo
determina los atributos del archivo, verificando el destino del enlace simbólico
(función)
devuelve un directorio adecuado para archivos temporales
(función)
Tipos de archivo
comprueba si la ruta dada se refiere a un dispositivo de bloques
(función)
comprueba si la ruta dada se refiere a un dispositivo de caracteres
(función)
verifica si la ruta dada se refiere a un directorio
(función)
(C++17)
verifica si la ruta dada hace referencia a un archivo o directorio vacío
(función)
(C++17)
verifica si la ruta dada se refiere a una tubería con nombre
(función)
(C++17)
verifica si el argumento se refiere a un otro archivo
(función)
verifica si el argumento se refiere a un archivo regular
(función)
(C++17)
verifica si el argumento se refiere a un socket IPC con nombre
(función)
(C++17)
verifica si el argumento se refiere a un enlace simbólico
(función)
verifica si el estado del archivo es conocido
(función)

Notas

El uso de esta biblioteca puede requerir opciones adicionales del compilador/enlazador. La implementación de GNU anterior a la 9.1 requiere enlazar con -lstdc++fs y la implementación de LLVM anterior a la 9.0 requiere enlazar con -lc++fs .

Macro de prueba de características Valor Estándar Característica
__cpp_lib_filesystem 201703L (C++17) Biblioteca del sistema de archivos

Véase también

Documentación de C++ para File System TS