zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    数据结构--链表基础练习题
    LeetCode 10.28每日一题1207. 独一无二的出现次数【简单】
    数据结构--链表
    LeetCode 10.25每日一题845. 数组中的最长山脉【中等】
    LeetCode 10.22每日一题763. 划分字母区间【中等】
    解决map热点与uni-app中map标签冲突的问题。(Vue Render函数应用)
    【Codeforces 1329A】Dreamoon Likes Coloring
    【Codeforces Alpha Round #20 C】Dijkstra?
    【 Educational Codeforces Round 93 (Rated for Div. 2) D】Colored Rectangles
    【Codeforces Round #643 (Div. 2) C】Count Triangles
  • 原文地址:https://www.cnblogs.com/liuliuliu/p/4561400.html
Copyright © 2011-2022 走看看