¿Hay alguna manera fácil de eliminar todos los archivos (imágenes) que guardé en la carpeta de documentos de la aplicación?¿Eliminar todos los archivos en el entorno limitado de iPhone (carpeta de documentos)?
Respuesta
NSFileManager *fileMgr = [[[NSFileManager alloc] init] autorelease];
NSError *error = nil;
NSArray *directoryContents = [fileMgr contentsOfDirectoryAtPath:documentsDirectory error:&error];
if (error == nil) {
for (NSString *path in directoryContents) {
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:path];
BOOL removeSuccess = [fileMgr removeItemAtPath:fullPath error:&error];
if (!removeSuccess) {
// Error handling
...
}
}
} else {
// Error handling
...
}
funcionó en su mayor parte. pero resulta que removeItemAtPath requiere una ruta de archivo completa. así que usé este NSString * myFilePath = [documentsDir stringByAppendingPathComponent: ruta]; gracias. –
Así es, Jinah. Mi error. Voy a corregir el código de arriba. –
Si esto funciona, sería bueno eliminar el comentario 'Código no probado:'. Gracias – Warpspace
- (void)removeFile
{
// you need to write a function to get to that directory
NSString *filePath = [self getDirectory];
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:filePath])
{
NSError *error;
if (![fileManager removeItemAtPath:filePath error:&error])
{
NSLog(@"Error removing file: %@", error);
};
}
}
Creo que esto es más corto.
Parece que esto solo elimina un único archivo o directorio – Warpspace
El código no funcionaba con IOS 7 y Xcode 5, por lo que se editó para que funcione con mi aplicación. Grandes créditos para @Ole Begemann y @pablasso.
-(void)EmptySandbox
{
NSFileManager *fileMgr = [[NSFileManager alloc] init];
NSError *error = nil;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSArray *files = [fileMgr contentsOfDirectoryAtPath:documentsDirectory error:nil];
while (files.count > 0) {
NSString *documentsDirectory = [paths objectAtIndex:0];
NSArray *directoryContents = [fileMgr contentsOfDirectoryAtPath:documentsDirectory error:&error];
if (error == nil) {
for (NSString *path in directoryContents) {
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:path];
BOOL removeSuccess = [fileMgr removeItemAtPath:fullPath error:&error];
files = [fileMgr contentsOfDirectoryAtPath:documentsDirectory error:nil];
if (!removeSuccess) {
// Error
}
}
} else {
// Error
}
}
}
Si está utilizando CoreData, solo tenga en cuenta que esto eliminará su Modelo también – BenB
Gracias, este código funciona como un amuleto. Soy un novato y sucede que sobrescribo el archivo almacenado NSMutableArray con NSMutableDictionary en el iPad. Guardar mi vida – nuttynibbles
NSFileManager *fileMgr = [[[NSFileManager alloc] init] autorelease];
NSError *error = nil;
NSArray *directoryContents = [fileMgr contentsOfDirectoryAtPath:documentsDirectory error:&error];
if (error == nil) {
for (NSString *path in directoryContents) {
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:path];
BOOL removeSuccess = [fileMgr removeItemAtPath:fullPath error:&error];
if (!removeSuccess) {
// Error handling
...
}
}
} else {
// Error handling
...
}
puede no ser aplicable en todos los casos, pero en general sería más eficiente para poner todos los archivos en un directorio personalizado dentro de Documentos Directorio y luego usar removeItemAtPath:error:
eliminar ese directorio y crear de nuevo. Por ejemplo:
// Clear cache
NSError *error;
[[NSFileManager defaultManager] removeItemAtPath:cacheDirectory error:&error];
if (error)
{
// error handling
}
// Create cache directory again
NSError *error2;
[[NSFileManager defaultManager] createDirectoryAtPath:cacheDirectory withIntermediateDirectories:YES attributes:nil error:&error2];
if (error2)
{
// error handling
}
Para desarrolladores Swift:
let fileMgr = NSFileManager()
let dirPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
if let directoryContents = try? fileMgr.contentsOfDirectoryAtPath(dirPath)
{
for path in directoryContents
{
let fullPath = (dirPath as NSString).stringByAppendingPathComponent(path)
do
{
try fileMgr.removeItem(atPath: fullPath)
print("Files deleted")
}
catch let error as NSError
{
print("Error deleting: \(error.localizedDescription)")
}
}
}
Swift 2.1 con un poco de sobrepeso de:
do {
let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let documentsDirectory = paths[0]
let documentsDirectoryURL = NSURL(fileURLWithPath: paths[0])
let directoryContents = try NSFileManager.defaultManager().contentsOfDirectoryAtPath(documentsDirectory)
var totalMegaBytes: Double = 0
var nrOfFiles = 0
for filename in directoryContents {
let file = documentsDirectoryURL.URLByAppendingPathComponent(filename)
let fileAttributes = try NSFileManager.defaultManager().attributesOfItemAtPath(file.path!)
let fileSize = fileAttributes[NSFileSize] as! Double
totalMegaBytes += fileSize/1024/1024
do {
try NSFileManager.defaultManager().removeItemAtURL(file)
nrOfFiles++
}catch let error as NSError{
print("> Emptying sandbox: could not delete file", filename, error)
}
}
print("> Emptying sandbox: Removed \(nrOfFiles) files with a total of \(round(totalMegaBytes))MB")
}catch let error as NSError{
print("> Emptying sandbox: Error emptying sandbox", error)
}
obtengo "error arrojado desde aquí no se manejan porque la captura adjunta no es exhaustiva" – Luda
Te estoy votando. Pero realmente deberías considerar eliminar esto: "deja error como NSError". O tal vez tenga alguna otra solución para el error anterior – Luda
No entiendo esa advertencia. ¿No es NSError lo más exhaustivo posible? – Sam
- 1. Eliminar carpeta y todos los archivos/subdirectorios
- 2. iCloud + Almacenamiento de medios en la carpeta Documentos de iPhone
- 3. iPhone SDK Xcode - Cómo obtener todos los nombres de archivo en los documentos dir
- 4. Buscar todos los archivos en una carpeta
- 5. C# eliminar una carpeta y todos los archivos y carpetas dentro de esa carpeta
- 6. ¿Cómo eliminar todos los archivos en una carpeta, pero no eliminar la carpeta usando las bibliotecas estándar de NIX?
- 7. Linux todos los archivos de la carpeta modificada ayer
- 8. Fuerza Borrar todos los archivos de una carpeta
- 9. ¿Cómo recorro todos los archivos en una carpeta usando C?
- 10. cómo eliminar todos los archivos excepto los últimos tres en una carpeta
- 11. ¿Cómo coloco archivos en la carpeta Documentos en xcode para desarrollo de iPhone?
- 12. ¿Eliminar todos los archivos de git de un directorio?
- 13. Eliminar todos los archivos en un directorio (no toque ninguna carpeta ni nada dentro de ellos)
- 14. C#: Obtener todos los archivos de imagen en la carpeta
- 15. Cómo eliminar archivos temporales ASP.net en un entorno de producción?
- 16. eliminar todos los archivos de una carpeta a FTP mediante secuencias de comandos por lotes ftp
- 17. Sangría en VIM con todos los archivos en la carpeta
- 18. iPhone (iOS): copiar archivos del paquete principal al error de la carpeta de documentos
- 19. ¿Cómo creo un entorno limitado de Java?
- 20. Cómo eliminar todos los archivos y carpetas en una carpeta mediante una llamada a cmd
- 21. macro - abrir todos los archivos en una carpeta
- 22. Eliminar todos los permisos de directorio
- 23. mover todos los archivos en una carpeta a otra?
- 24. ¿Cómo eliminar todos los archivos almacenados por una versión anterior de la aplicación de iPhone?
- 25. iPhone (iOS): copiar archivos del paquete principal a la carpeta de documentos provoca crash
- 26. ¿Cómo eliminar los contenidos del directorio de Documentos (y no del directorio de Documentos en sí)?
- 27. eliminar carpeta/archivos y subcarpeta
- 28. iPhone: cómo eliminar todos los objetos de un UIScrollView
- 29. NSIS - Eliminar todos los archivos, excepto un archivo
- 30. Ejecutar código de ruby en un entorno limitado
http://stackoverflow.com/questions/4792663/remote-wipe-of- application-data-in-ios esta es una pregunta similar suponiendo que quiere borrar todo en la carpeta de documentos, pero todavía no hay solución –