删除iPhone沙箱中的所有文件(文档文件夹)?

Jin*_*dam 49 iphone ios4 ios

有没有一种简单的方法可以删除我保存在应用程序文档文件夹中的所有文件(图像)?

Ole*_*ann 94

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
    ...
}
Run Code Online (Sandbox Code Playgroud)

  • 如果这样可行,那么删除`未经测试的代码:`注释会很好.谢谢 (2认同)

Msm*_*993 15

代码不适用于IOS 7和Xcode 5,因此编辑后可以使用我的应用程序.@Ole Begemann和@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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Tib*_*rea 15

对于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)")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Luo*_*Duc 7

- (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); 
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

我相信这更短.


Sam*_*Sam 5

Swift 2.1还有一些额外的:

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)
}
Run Code Online (Sandbox Code Playgroud)