如何使用 NSFileManager 删除目录及其内容

问题描述 投票:0回答:3

我创建了一些目录,其中包含 iOS 应用程序的 PDF 文件。如何使用

NSFileManager
删除目录及其内容?

我需要先循环并删除内容吗?任何代码示例将不胜感激。

objective-c nsfilemanager
3个回答
52
投票

首先,明智的做法是查看 Apple 的 iPhone

NSFileManager
文档:NSFileManager 类参考。其次,查看
NSFileManager
-removeItemAtPath:error:
方法及其文档。这就是您要找的。


39
投票

这是我编辑过的一些代码来适应这个问题

- (NSMutableString*)getUserDocumentDir {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSMutableString *path = [NSMutableString stringWithString:[paths objectAtIndex:0]];
    return path;
}


- (BOOL) createMyDocsDirectory
{
    NSMutableString *path = [self getUserDocumentDir];
    [path appendString:@"/MyDocs"];
    NSLog(@"createpath:%@",path);
    return [[NSFileManager defaultManager] createDirectoryAtPath:path
                                           withIntermediateDirectories:NO
                                           attributes:nil 
                                           error:NULL];
}

- (BOOL) deleteMyDocsDirectory 
{
    NSMutableString *path = [self getUserDocumentDir];
    [path appendString:@"/MyDocs"];
    return [[NSFileManager defaultManager] removeItemAtPath:path error:nil];
}

1
投票

您可以使用以下方法获取文档目录:

NSString *directoryPath = [NSHomeDirectory() stringByAppendingString:@"/Documents/"];

** 使用以下命令删除完整目录路径:

BOOL success = [fileManager removeItemAtPath:directoryPath error:nil];
if (!success) {
    NSLog(@"Directory delete failed");
}

** 使用以下命令删除该目录的内容:

NSFileManager *fileManager = [NSFileManager defaultManager];    
if ([fileManager fileExistsAtPath:directoryPath]) {
            NSDirectoryEnumerator *dirEnum = [fileManager enumeratorAtPath:directoryPath];
            NSString *documentsName;
            while (documentsName = [dirEnum nextObject]) {
                NSString *filePath = [directoryPath stringByAppendingString:documentsName];
                BOOL isFileDeleted = [fileManager removeItemAtPath:filePath error:nil];
                if(isFileDeleted == NO) {
                    NSLog(@"All Contents not removed");
                    break;
                }
            }
            NSLog(@"All Contents Removed");
        }

** 您可以根据您的要求编辑

directoryPath

© www.soinside.com 2019 - 2024. All rights reserved.