Cocoa - NSFileManager removeItemAtPath Not Working

24,545

Solution 1

Error code 4 seems to be NSNoSuchFileError. If the file you want to delete really exists, then you have got the path wrong. You'll need to post some code if you want us to tell you exactly how you got the path wrong.

If the file doesn't exist, you can ignore the error.

Solution 2

I had a similar problem in swift.For some reason fileManager.removeItemAtPath did't work and I changed fileManager.removeItemAtPath(filePath) to fileManager.removeItemAtURL(fileURL) and it works fine.

    let fileManager = NSFileManager()
    let documentsFolderUrl = fileManager.URLForDirectory(.DocumentDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: false, error: nil)

    let soundURL = documentsFolderUrl!.URLByAppendingPathComponent(recording.path)
    let stringTrimmedFilePath = "trimmed_\(recording.path)"
    let trimmedSoundURL = documentsFolderUrl!.URLByAppendingPathComponent(stringTrimmedFilePath)
    var error: NSError?
    fileManager.removeItemAtURL(trimmedSoundURL, error: &error)

Solution 3

First you need to pick the path for the document directory then you can delete the file. Only remove statement is not sufficient.

   NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
        NSString *documentsDirectoryPath = [paths objectAtIndex:0];

    NSString *databaseFile = [documentsDirectoryPath stringByAppendingPathComponent:@"text.txt"];

    NSFileManager *fileManager = [NSFileManager defaultManager];
    [fileManager removeItemAtPath:databaseFile error:NULL];

use this for solving your problem.

Solution 4

Your path is incorrect

Use the following

NSString *str = [outputFieldURL path];

instead of

NSString *str = [outputFieldURL absoluteString];

The method "removeItemAtPath:" need the local path of file, If you want to remove using url, you should use -removeItemAtURL:

Share:
24,545
lab12
Author by

lab12

Updated on March 29, 2020

Comments

  • lab12
    lab12 about 4 years

    I am trying to delete a file, but somehow nsfilemanager will not allow me to do so. I do use the file in one line of code, but once that action has been ran, I want the file deleted. I have logged the error code and message and I get error code: 4 and the message:

    "text.txt" could not be removed
    

    Is there a way to fix this error "cleanly" (without any hacks) so that apple will accept this app onto their Mac App Store?

    EDIT:

    This is what I am using:

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

    Thanks,

    kevin