iOS笔记之文件读写

最近做的项目中要存储一组图片数据,图片带有name,date等属性,处理办法是讲image图片直接存在沙盒documents文件中,再使用plist文件存储图片属性和image路径。

存入图片:

- (void)savePhotos:(NSArray *)photos {

    

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *plistPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"photo_info.plist"];

    NSString *filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Image"];

    NSLog(@"%@", filePath);

    

    NSFileManager* fileManager = [NSFileManager defaultManager];

    if (![fileManager fileExistsAtPath:plistPath]) {

        [fileManager createFileAtPath:plistPath contents:nil attributes:nil];

    }

    if (![fileManager fileExistsAtPath:filePath]) {

        [fileManager createDirectoryAtPath:filePath withIntermediateDirectories:NO attributes:nil error:nil];

    }



    NSMutableArray *savePhotos = [[NSMutableArray alloc] init];

    

    for (Photo *photo in photos) {

        NSMutableDictionary *info = [[NSMutableDictionary alloc]init];



        NSString *imagePath = [filePath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.jpg", photo.name]];

        [UIImagePNGRepresentation(photo.image)writeToFile:imagePath atomically:YES];

        [info setObject:imagePath forKey:@"ImagePath"];

        [info setObject:photo.name forKey:@"Name"];

        [info setObject:photo.tags forKey:@"Tags"];

        [info setObject:photo.date forKey:@"Date"];

        

        [savePhotos addObject:info];

    }

    [savePhotos writeToFile:plistPath atomically:YES];

}

 

读取图片:

- (NSArray *)loadPhotosFromDisk {

    //从本地读取图片

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *plistPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"photo_info.plist"];



    NSArray *photosArr = [NSArray arrayWithContentsOfFile:plistPath];

    for (NSDictionary *dic in photosArr) {

        Photo *photo = [[Photo alloc] init];

        photo.image = [UIImage imageWithContentsOfFile:[dic valueForKey:@"ImagePath"]];

        photo.name = [dic valueForKey:@"Name"];

        photo.tags = [dic valueForKey:@"Tags"];

        photo.date = [dic valueForKey:@"Date"];

        [self.photos addObject:photo];

    }

    

    return self.photos;

}

 

你可能感兴趣的:(文件读写)