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;
}
时间: 2024-11-23 21:42:31

iOS笔记之文件读写的相关文章

转载-Python学习笔记之文件读写

Python 文件读写 Python内置了读写文件的函数,用法和C是兼容的.本节介绍内容大致有:文件的打开/关闭.文件对象.文件的读写等. 本章节仅示例介绍 TXT 类型文档的读写,也就是最基础的文件读写,也需要注意编码问题:其他文件的读写及编码相关详见专题的博文. open()   close()     with open(...) as ... 看以下示例就能了解 Python 的 open() 及 close() 函数.这边调用 read()方法可以一次读取文件的全部内容,Python把

python基础教程学习笔记---(6)文件读写

1.open函数语法: python通过open函数打开文件,建立程序与文件之间的连接. open函数语法:open(filename[,mode[,buffering]]) 其中filename是指要进行操作的文件名称,由文件名称和路径组成,需要加引号. mode为操作模式参数,包括读.写.追加等. buffering是缓冲参数,控制着文件的缓冲.当buffering=0或者False时,I/O就是无缓冲的,所有的读写操作都是直接针对硬盘的,如果是1或者True,I/O就是有缓冲的,pytho

Python学习笔记九-文件读写

1,读取文件: f=open('目录','读写模式',encoding='gbk,error='egiong') 后三项可以不写但是默认是' r'读模式:open函数打开的文件对象会自动加上read()方法: f.read()读出刚刚打开的文件:最后一定要记得close()函数:否则会出现不可估计的后果. 读写模式:r只读,r+读写,w新建(会覆盖原有文件),a追加,b二进制文件.常用模式 .如:'rb','wb','r+b'等等 readline()函数,会依次读取多有文件内容,按行返回lis

[python 笔记5]文件读写

1.定义 open(filename[,mode[,buffering]]) 其中mode有: 2.读文件 1)读取整个文件 test=open('input.txt','r') print test.read() 2)按字节数读取 test=open('input.txt','r') print test.read(10) 3)按行读取 test=open('input.txt','r') lines=test.readlines() print lines[1] 3.写文件 1)写入整个文件

IOS-沙盒机制(二 文件读写)

一 目录说明 如下图所示,一个沙盒中典型存在下面的目录和文件 各个目录及文件说明: 1.Documents      您应该将所有的应用程序数据文件写入到这个目录下,这个目录用于存储用户数据或其它应该定期备份的信息. 2.AppName.app   这是应用程序的程序包目录,包含应用程序的本身.由于应用程序必须经过签名,所以您在运行时不能对这个目录中的内容进行修改,否则可能会使应用程序无法启动. 3.Library              这个目录下有两个子目录:Caches 和 Prefer

.net学习笔记--文件读写的几种方式

在.net中有很多有用的类库来读写硬盘上的文件 一般比较常用的有: File:1.什么时候使用:当读写件大小不大,同时可以一次性进行读写操作的时候使用         2.不同的方式可以读写文件类型不一样. ReadAllBytes()  WriteAllByte():可以读写任意类型的文件 (里面封装的是FileStream)           ReadAllLines()  ReadAllText():(里面封装是StreamWriter,StreamReader),只能读写文本类型文件

【python下使用OpenCV实现计算机视觉读书笔记3】读写视频文件

Lua可以调用C函数的能力将极大的提高Lua的可扩展性和可用性. 对于有些和操作系统相关的功能,或者是对效率要求较高的模块,我们完全可以通过C函数来实现,之后再通过Lua调用指定的C函数. 对于那些可被Lua调用的C函数而言,其接口必须遵循Lua要求的形式,即typedef int (*lua_CFunction)(lua_State* L). 简单说明一下,该函数类型仅仅包含一个表示Lua环境的指针作为其唯一的参数,实现者可以通过该指针进一步获取Lua代码中实际传入的参数.返回值是整型,表示该

标C编程笔记day05 函数声明、文件读写、联合类型、枚举类型

函数声明: 1.隐式声明:在没有声明的情况下,系统可根据参数类型判断去调用函数(有可能出错) 2.显式声明:声明在被调用之前,如:double add(double,double);  函数声明参数可只写类型,不需要写函数体. 文件操作: fopen  --打开文件,FILE *pFile=fopen("a.txt","w"); fopen的打开模式: r:只能读,要求文件存在 r+:可读可写,要求文件存在 w:只能写,创建文件,如果文件存在则先删除旧文件 w+:可

Lua学习笔记8:文件读写

lua中文件读写经常在游戏配置中用到,比如客户端的音效音乐开关等. Lua官方API文档:点这里 I/O库为文件操作提供4个主要函数:io.open(),io.read(),io.write和io.close(). io.open(文件路径,打开方式):以指定方式打开一个文件,打开成功返回一个文件句柄,失败返回nil和错误描述. 可以传入以下六种打开方式: "r":读模式(默认): "w":写模式: "a":附加模式: "r+"