std::experimental::filesystem:: exists
From cppreference.net
<
cpp
|
experimental
|
fs
|
Definido en el encabezado
<experimental/filesystem>
|
||
|
bool
exists
(
file_status s
)
|
(1) | (filesystem TS) |
|
bool
exists
(
const
path
&
p
)
;
bool exists ( const path & p, error_code & ec ) |
(2) | (filesystem TS) |
Comprueba si el estado del archivo o la ruta proporcionada corresponde a un archivo o directorio existente.
1)
Equivalente a
status_known
(
s
)
&&
s.
type
(
)
!
=
file_type
::
not_found
.
2)
Equivalente a
exists
(
status
(
p
)
)
o
exists
(
status
(
p, ec
)
)
(los enlaces simbólicos se siguen). La sobrecarga que no lanza excepciones retorna
false
si ocurre un error.
Contenidos |
Parámetros
| s | - | estado del archivo a verificar |
| p | - | ruta a examinar |
| ec | - | parámetro de salida para reporte de errores en la sobrecarga no lanzadora |
Valor de retorno
true si la ruta o el estado del archivo dados corresponden a un archivo o directorio existente, false en caso contrario.
Excepciones
1)
noexcept
especificación:
noexcept
2)
La sobrecarga que no toma un parámetro
error_code
&
lanza
filesystem_error
en errores de API del sistema operativo subyacente, construido con
p
como primer argumento y el código de error del sistema operativo como argumento de código de error.
std::
bad_alloc
puede ser lanzado si falla la asignación de memoria. La sobrecarga que toma un parámetro
error_code
&
lo establece al código de error de la API del sistema operativo si una llamada a la API falla, y ejecuta
ec.
clear
(
)
si no ocurren errores. Esta sobrecarga tiene
noexcept
especificación:
noexcept
Notas
La información proporcionada por esta función generalmente también se ofrece como un subproducto de la iteración de directorios. Durante la iteración de directorios, llamar
exists(*iterator)
es menos eficiente que
exists(iterator->status())
.
Ejemplo
Ejecutar este código
#include <cstdint> #include <experimental/filesystem> #include <fstream> #include <iostream> namespace fs = std::experimental::filesystem; void demo_exists(const fs::path& p, fs::file_status s = fs::file_status{}) { std::cout << p; if (fs::status_known(s) ? fs::exists(s) : fs::exists(p)) std::cout << " exists\n"; else std::cout << " does not exist\n"; } int main() { fs::create_directory("sandbox"); std::ofstream("sandbox/file"); // create regular file fs::create_symlink("non-existing", "sandbox/symlink"); demo_exists("sandbox"); for (auto it = fs::directory_iterator("sandbox"); it != fs::directory_iterator(); ++it) demo_exists(*it, it->status()); // use cached status from directory entry fs::remove_all("sandbox"); }
Salida:
"sandbox" exists "sandbox/file" exists "sandbox/symlink" does not exist
Véase también
|
determina los atributos del archivo
determina los atributos del archivo, verificando el destino del enlace simbólico (función) |
|
|
representa el tipo de archivo y permisos
(clase) |
|
|
estado en caché del archivo designado por esta entrada de directorio
symlink_status en caché del archivo designado por esta entrada de directorio (función miembro pública de
std::experimental::filesystem::directory_entry
)
|