iOS笔记之文件读写
最近做的项目中要存储一组图片数据,图片带有name,date等属性,处理办法是讲image图片直接存在沙盒documents文件中,再使用plist文件存储图片属性和image路径。
存入图片:
- (void)savePhotos:(NSArray *)photos {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *plistPath = [[paths objectAtIndex:] stringByAppendingPathComponent:@"photo_info.plist"];
NSString *filePath = [[paths objectAtIndex:] 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:] 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;
}
iOS笔记之文件读写的更多相关文章
- iOS数据持久化文件读写之偏好设置
很多iOS应用都支持偏好设置,比如保存用户名.密码.字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能.每个应用都有个NSUserDefaults实例,通过它来存取偏好设置.比如, ...
- Cocos2d-x在win32,android和IOS下的文件读写问题
最近在学习和使用Cocos2d-x框架,虽然说的是跨平台,但是在用VS进行开发,然后移植到android或IOS下,也可能会出现各种问题,需要做细微的调整. 例如我在做文件读写操作的时候,很可能在wi ...
- 转载-Python学习笔记之文件读写
Python 文件读写 Python内置了读写文件的函数,用法和C是兼容的.本节介绍内容大致有:文件的打开/关闭.文件对象.文件的读写等. 本章节仅示例介绍 TXT 类型文档的读写,也就是最基础的文件 ...
- 【java学习笔记】文件读写(IO流)
1.字节流 FileInputStream.FileOutputStream ①FileInputStream import java.io.FileInputStream; public class ...
- C语言笔记 10_文件读写&预处理器
文件读写 上一章我们讲解了 C 语言处理的标准输入和输出设备.本章我们将介绍 C 程序员如何创建.打开.关闭文本文件或二进制文件. 一个文件,无论它是文本文件还是二进制文件,都是代表了一系列的字节.C ...
- Python学习笔记九-文件读写
1,读取文件: f=open('目录','读写模式',encoding='gbk,error='egiong') 后三项可以不写但是默认是' r'读模式:open函数打开的文件对象会自动加上read( ...
- python学习笔记 IO 文件读写
读写文件是最常见的IO操作.python内置了读写文件的函数. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统完成的,现代操作系统不允许普通的程序直接对磁盘进行操作,所以, 读写 ...
- hadoop笔记-hdfs文件读写
概念 文件系统 磁盘进行读写的最小单位:数据块,文件系统构建于磁盘之上,文件系统的块大小是磁盘块的整数倍. 文件系统块一般为几千字节,磁盘块一般512字节. hdfs的block.pocket.chu ...
- java笔记----property文件读写
package com.test.property; import java.io.BufferedInputStream; import java.io.File; import java.io.F ...
随机推荐
- kubernetes实战(三):k8s v1.11.1 持久化EFK安装
1.镜像下载 所有节点下载镜像 docker pull kibana: docker tag kibana: docker.elastic.co/kibana/kibana: docker pull ...
- ubuntu配置tomcat和jdk
1.安装tomcat此处以tomcat8为例. 先到tomcat官网:http://tomcat.apache.org下载相应的tar.gz的安装包 放到ubuntu系统的指定位置(自己指定)解压. ...
- java反射机制与动态代理
在学习HadoopRPC时.用到了函数调用.函数调用都是採用的java的反射机制和动态代理来实现的,所以如今回想下java的反射和动态代理的相关知识. 一.反射 JAVA反射机制定义: JAVA反射机 ...
- JavaScript类库汇总
日期处理Moment.js http://momentjs.cn/ http://momentjs.com/ nodejslinq,jslinq http://jslinq.codepl ...
- jquery map方法使用示例
jquery的map方法非常好用,其作用是将数组或单个对象,替换为新的内容 感觉jquery的map方法非常好用. 方法作用:将数组或单个对象,替换为新的内容. 应用实例:获取一组checkbox的 ...
- 协变返回类型---《C++必知必会》 条款 31
一般来说,一个重写的函数与被它重写的函数具有相同的返回类型. 然而,这个规则对于“协变返回类型(covariant return type)“的情形来说有所放松.也就是说,如果B是一个类类型,并且一 ...
- cocos-lua基础学习(10)scheduler类学习笔记
local scheduler = cc.Director:getInstance():getScheduler() local function shouldNotCrash(dt) end loc ...
- SQLite 自定义函数,聚合,排序规则
SQLite 自定义函数,聚合,排序规则 1.使用自定义函数, 聚合以及排序规则的基本方法是使用回调函数.这些注册的函数的生命周期只存在于应用程序中, 并不存储在数据库文件中, 因此需要在每个连接建立 ...
- Python笔记 #14# Pandas: Selection
10 Minutes to pandas import pandas as pd import numpy as np import matplotlib.pyplot as plt dates = ...
- Linux内核参数之arp_ignore和arp_announce
一.arp_ignore和arp_announce介绍 arp_ignore和arp_announce参数都和ARP协议相关,主要用于控制系统返回arp响应和发送arp请求时的动作.这两个参数很重要, ...