iOS开发-文件管理(一)
2015-10-23 10:32
387 查看
一、iOS沙盒机制
每个app都有自己的沙盒目录,iOS应用程序只能对自己创建的文件进行读写操作,包括图片、音视频、plist文件、sqlite等资源文件。
每个应用程序都有自己独立的存储空间(沙盒目录)一般程序之间不可相互访问
模拟器沙盒位置
/Users/lihuaguang/Library/Developer/CoreSimulator/Devices/3DAC7BC1-CDCB-457E-B1E0-0AE3883F306E/data/Containers/Data/Application/6EA22853-82E5-450D-884B-7112C2F846E这个目录包含三个子目录,分别是Document、Library和tmp
Document:一般持久数据都放在此目录,可以在当中添加子目录和文件,iTunes备份和恢复时,会包含此目录。Library:设置程序默认设置和其他信息,NSUserDefaults保存的数据就保存在此目录。
tmp:创建临时文件目录,当iOS设备重启时,文件会被自动清除。
获取沙盒目录
// 根目录(home)目录 NSString *homePath = NSHomeDirectory(); // Document目录 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *docPath = [paths lastObject]; // Library目录 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); NSString *libraryPath = [paths lastObject]; // Library中的Cache NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSString *cachePath = [paths lastObject]; // temp路径 NSString *temp = NSTemporaryDirectory();
二、文件路径(NSString)
// 获得此路径的各个组成部分 NSArray *components = [docPath pathComponents]; // 提取路径的最后一个组成部分 NSString *filePath = [docPath lastPathComponent]; // 删除路径的最后一个组成部分 NSString *path1 = [docPath stringByDeletingLastPathComponent]; // 获取制定文件目录 NSString *path2 = [docPath stringByAppendingPathComponent:@"test.plist"]; // 获取除去扩展名的路径 NSString *path3 = [path2 stringByDeletingPathExtension]; // 获取路径扩展名 NSString *path4 = [path2 pathExtension]; // 路径最后部分追加扩展名 NSString *path5 = [path3 stringByAppendingPathExtension:@"jpg"];
三、文件管理常用方法(NSFileManager)
// 判断文件是否存在 NSFileManager *fileManager = [NSFileManager defaultManager]; if (![fileManager fileExistsAtPath:filePath]) { } // 文件不存在,则创建 BOOL isCreate = [fileManager createFileAtPath:filePath contents:nil attributes:nil]; // 获取文件数据 NSData *fileData = [fileManager contentsAtPath:path1]; // 写入文件 BOOL isCreate = [fileManager createFileAtPath:filePath contents:data attributes:nil]; BOOL isSave = [dataArr writeToFile:filePath atomically:YES]; // 移动文件 BOOL isMove = [fileManager moveItemAtPath:fromPath toPath:toPath error:nil]; // 拷贝文件 BOOL isCopy = [fileManager copyItemAtPath:fromPath toPath:toPath error:nil]; // 删除文件 BOOL isDelete = [fileManager removeItemAtPath:path error:nil]; // 比较文件内容是否一致 BOOL isSame = [fileManager contentsEqualAtPath:path1 andPath:path2]; // 获取文件大小 NSDictionary *attrDic = [fileManager attributesOfItemAtpath:sourcePath error:nil]; NSNumber *fileSize = [attrDic objectForKey:NSFileSize];
相关文章推荐
- IOS页面布局 纯代码
- iOS OC声明变量在@interface括号中与使用@property的区别
- iOS重绘机制drawRect 附:画图画线等code
- ios 使用pods
- IOS开发常用的正则表达式
- iOS常见错误
- 源码推荐(10.20):GitHub iPhone 客户端--MrCode,实时跟踪分析iOS App视图的小工具
- iOS处理分享时,在三方应用中无法返回自己应用的问题
- iOS中常见错误
- iOS实现一个颜色渐变的弧形进度条
- AFNetworking 3.0迁移指南
- iOS上传错误 ERROR ITMS-90049
- 编译opencore-amr for iOS8并支持bitcode
- IOS9 KeyWindow为空的问题
- iOS用户首选项NSUserDefaults浅析
- AFNetworking 3.0迁移指南
- 芒果iOS开发sizeof和strlen的区别
- 整理iOS9适配中出现的坑(图文)
- duplicate symbols for architecture i386/x86_64解决办法
- 零基础ios开发(二 关联button 实现图片的上下左右移动)