¿Cómo puedo eliminar una carpeta con todos sus archivos/subdirectorios (eliminación recursiva) en C++?Eliminar carpeta y todos los archivos/subdirectorios
Respuesta
El estándar C++ no ofrece ninguna forma de hacerlo: deberá usar un código específico del sistema operativo o una biblioteca multiplataforma como Boost.
Puede usar boost::remove_all
desde Boost.Filesystem.
En serio:
system("rm -rf /path/to/directory")
Tal vez más de lo que estás buscando, pero Unix específica:
/* Implement system("rm -rf") */
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <sys/syslimits.h>
#include <ftw.h>
/* Call unlink or rmdir on the path, as appropriate. */
int
rm(const char *path, const struct stat *s, int flag, struct FTW *f)
{
int status;
int (*rm_func)(const char *);
switch(flag) {
default: rm_func = unlink; break;
case FTW_DP: rm_func = rmdir;
}
if(status = rm_func(path), status != 0)
perror(path);
else
puts(path);
return status;
}
int
main(int argc, char **argv)
{
while(*++argv) {
if(nftw(*argv, rm, OPEN_MAX, FTW_DEPTH)) {
perror(*argv);
return EXIT_FAILURE;
}
}
return EXIT_SUCCESS;
}
¿Fue esto downvoted porque es C en lugar de C++ (aunque se compila muy bien con g ++ -Wall -Wextra), o porque la plataforma de downvoter no tiene nftw? Comenta cuando bajas, ¡por favor! Este es un código sólido. –
¿Qué tan portátil es 'system (" rm -rf/path/to/directory ")'? ¿Funcionará en cualquier sistema operativo * nix? Claramente no funcionará en Windows. –
Usted puede utilizar ftw()
, nftw()
, readdir()
, readdir_r()
recorrer un directorio, y eliminar archivos recursivamente.
Pero como ni ftw()
, nftw()
, readdir()
es seguro para subprocesos, recomendaré readdir_r()
en su lugar si su programa se ejecuta en un entorno de subprocesos múltiples.
- 1. C# eliminar una carpeta y todos los archivos y carpetas dentro de esa carpeta
- 2. Eliminar todos los atributos
- 3. Cómo eliminar todos los archivos y carpetas en una carpeta mediante una llamada a cmd
- 4. ¿Cómo eliminar todos los archivos en una carpeta, pero no eliminar la carpeta usando las bibliotecas estándar de NIX?
- 5. eliminar carpeta/archivos y subcarpeta
- 6. cómo eliminar todos los archivos excepto los últimos tres en una carpeta
- 7. Buscar todos los archivos en una carpeta
- 8. ¿Cómo recorro todos los archivos en una carpeta usando C?
- 9. Fuerza Borrar todos los archivos de una carpeta
- 10. Comando para eliminar recursivamente todos los directorios .svn en Windows
- 11. ¿Cómo eliminar una carpeta con todos los contenidos usando un archivo bat en Windows?
- 12. Cómo eliminar todos los datos de solr y hbase
- 13. HTML5 - localStorage eliminar y borrar todos los datos
- 14. JQuery DataTables - Eliminar fnFilter y mostrar todos los resultados
- 15. Eliminar todos los espacios en blanco y las líneas vacías
- 16. Eliminar todos los archivos en un directorio (no toque ninguna carpeta ni nada dentro de ellos)
- 17. eliminar todos los archivos de una carpeta a FTP mediante secuencias de comandos por lotes ftp
- 18. ¿Eliminar todos los archivos en el entorno limitado de iPhone (carpeta de documentos)?
- 19. Magento: cómo eliminar todos los redireccionamientos permanentes
- 20. agregar/eliminar TraceListener a todos los TraceSources
- 21. Eliminar todos los espacios en QGridLayout
- 22. ¿Cómo eliminar todos los elementos de ListBox?
- 23. eliminar todos los objetos de una uiview?
- 24. ¿Eliminar todos los archivos de git de un directorio?
- 25. Eliminar todos los índices en Lucene.net
- 26. Eliminar todos los clientes en Magento
- 27. eliminar todos los UIButton de la subvista
- 28. Eliminar todos los nodos en jsTree
- 29. Cómo eliminar todos los XElements vacíos
- 30. Eliminar todos los permisos de directorio
Simplemente un nodo lateral: hay un duplicado para esta pregunta, si no quiere confiar en el impulso, vale la pena echar un vistazo a la respuesta aceptada [allí] (http://stackoverflow.com/a/2256974/1312382). – Aconcagua