Bazinga
Bazinga

Reputation: 2466

Deleting in NSDocumentDirectory

I save in NSDocumentDirectory this way:

NSLog(@"%@", [info objectAtIndex:i]);
NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory,    NSUserDomainMask ,YES );
NSString *documentsDir = [paths objectAtIndex:0];
NSString *savedImagePath = [documentsDir stringByAppendingPathComponent:[NSString stringWithFormat:@"Images%d.png", i]];

ALAssetRepresentation *rep = [[info objectAtIndex: i] defaultRepresentation];
UIImage *image = [UIImage imageWithCGImage:[rep fullResolutionImage]];

//----resize the images
image = [self imageByScalingAndCroppingForSize:image toSize:CGSizeMake(256,256*image.size.height/image.size.width)];

NSData *imageData = UIImagePNGRepresentation(image);
[imageData writeToFile:savedImagePath atomically:YES];

I know how to delete all the images in NSDocumentDirectory.

But I was wondering on how to delete all of the images with the name of oneSlotImages.

Thanks

Upvotes: 2

Views: 3191

Answers (4)

Nilesh Kumar
Nilesh Kumar

Reputation: 2160

As this is an old question now and also above answers shows how to delete by image name.What if I want to delete everything from NSDocumentDirectory at one shot, use the below code.

// Path to the Documents directory
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
if ([paths count] > 0)
{
  NSError *error = nil;  
  NSFileManager *fileManager = [NSFileManager defaultManager];

  // Print out the path to verify we are in the right place
  NSString *directory = [paths objectAtIndex:0];
  NSLog(@"Directory: %@", directory);

  // For each file in the directory, create full path and delete the file
  for (NSString *file in [fileManager contentsOfDirectoryAtPath:directory error:&error])
  {    
    NSString *filePath = [directory stringByAppendingPathComponent:file];
    NSLog(@"File : %@", filePath);

    BOOL fileDeleted = [fileManager removeItemAtPath:filePath error:&error];

    if (fileDeleted != YES || error != nil)
    {
      // Deal with the error...
    }
  }

} 

Upvotes: 0

Dhruv
Dhruv

Reputation: 2163

Try this ,just copy this code,your images with name oneSlotImages,will be removed from DocumentDirectory ,its just simple :

NSArray *directoryContents =  [[NSFileManager defaultManager] contentsOfDirectoryAtPath:[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject] error:NULL];

    if([directoryContents count] > 0)
    {
        for (NSString *path in directoryContents)
        {
            NSString *fullPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject] stringByAppendingPathComponent:path];

            NSRange r =[fullPath rangeOfString:@"oneSlotImages"];
            if (r.location != NSNotFound || r.length == [@"oneSlotImages" length])
            {
                [[NSFileManager defaultManager] removeItemAtPath:fullPath error:nil];
            }
        }
    }

Upvotes: 5

Mathew Varghese
Mathew Varghese

Reputation: 4527

Use like,

NSArray *dirFiles = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:strDirectoryPath error:nil];
NSArray *zipFiles = [dirFiles filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self CONTAINS[cd] %@", @"oneSlotImages"]];

The array zipFiles contains the names of all the files we filtered. Thus by appending the filenames with complete path of document directory with in a loop, you can make the full filepath of all the filtered files in the array. Then you can use a loop and call the method of NSFileManager object like below

[fileManager removeItemAtPath: strGeneratedFilePath error: &err];

which removes the itm at path from the directory.

By this way you can filter out the filenames contains oneSlotImages. So you can prefer to delete this ones. Hope this helps you.

Upvotes: 1

Jonathan King
Jonathan King

Reputation: 1528

Have you looked at NSFileManager's methods? Maybe something like this called in a loop for all of your images.

[[NSFileManager defaultManager] removeItemAtPath:imagePath error:NULL];

Upvotes: 2

Related Questions