如何检查NSDocumentDirectory中存在的数据

时间:2014-02-21 09:27:16

标签: ios iphone objective-c

我单击按钮并检查NSDocumentDirectory中是否存在(.png)或其他数据。如果存在则推送视图控制器。

我试过了,

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"u0-1b.png"];

if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main_iPad" bundle:nil];

    UIViewController *controller = (UIViewController *)[storyboard instantiateViewControllerWithIdentifier:@"SavedViewController"];

    [self.navigationController pushViewController:controller animated:YES];
}
else
    NSLog(@"file doesnt exist");

这里我给出了完整的图片名称(u1-1b.png),但是我想查看数据或扩展名(.png,或)。

2 个答案:

答案 0 :(得分:3)

您可以使用以下代码

进行管理
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSArray *filePathsArray = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:documentsDirectory  error:nil];
NSLog(@"files array %@", filePathsArray);

if(filePathsArray.count > 0)
{
     // data is exist;
}
else
{
  // data does not exist;
}

您可以使用以下代码

获取filePathsArray中每个对象的路径
for (int i = 0 ; i < filePathsArray.count; i++)
{
   NSString *filePath = [documentsDirectory stringByAppendingPathComponent:[filePathsArray objectAtIndex:i]];
}

如果您想获得任何文件的扩展名,那么 @ Basheer_CAD 喜欢对您有所帮助。

答案 1 :(得分:3)

此方法返回文档目录中NSDictionary中的所有文件路径和扩展名,并使用它。如果要搜索子文件夹,则使用directory参数,例如:如果文件夹mmm中的文件通过@"/mmm",则传递nil

 - (NSDictionary*)listOfFilesAtDirectory:(NSString*)directory
    {
        NSMutableDictionary *filesAtDirectory = [[NSMutableDictionary alloc] init];
        NSString *documentsDir = [self documentsDirectory];
        NSString *givenDirectory = [documentsDir stringByAppendingString:directory];
        NSError *searchErr = nil;

        NSArray *arrFiles = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:givenDirectory
                                                                                error:&searchErr];
        if(!searchErr)
        {
            for(NSString *strFileNameAndExtension in arrFiles)
            {
                NSString *strFilePath = [givenDirectory stringByAppendingPathComponent:strFileNameAndExtension];
                [filesAtDirectory setObject:strFileNameAndExtension forKey:strFilePath];
            }
        }
        else
        {
            NSLog(@"Error reading files in this directory: %@, \n Error description:%@", directory, searchErr.description);
        }

        return filesAtDirectory;
    }

以防这是documentsDirectory方法

- (NSString*)documentsDirectory
{
    NSString *strRootPath  = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    return strRootPath;
}