文件系统

扫码查看
沙箱iOS app在安装的时候都会被分配一个独立的沙箱(sandbox),它的目录访问基本上都被限制在这个沙箱中。沙箱中有多个目录,每个目录有不同的用途、访问限制、备份策略等。定位App Bundle只能通过NSBundle来获取App Bundle中的文件。标准目录可以通过NSFileManager的URLsForDirectory:inDomains:函数来获取标准目录管理通过创建自定义的文件夹来管理文件,使目录结构更清晰创建目录NSFileManager: createDirectoryAtURL:withIntermediateDirectories:attributes:error: createDirectoryAtPath:withIntermediateDirectories:attributes:error:例:在~/Library/Application Support目录中创建一个文件夹文件 createFileAtPath:contents:attributes: (NSFileManager) writeToURL:atomically: (NSData) writeToURL:atomically: (NSString) writeToURL:atomically:encoding:error: (NSString)拷贝、移动NSFileManager: copyItemAtURL:toURL:error: copyItemAtPath:toPath:error: moveItemAtURL:toURL:error: moveItemAtPath:toPath:error:例:备份~/Library/Application Support/bundleID/Data目录删除NSFileManager: removeItemAtURL:error: removeItemAtPath:error:设置是否自动备份通过调用NSURL的setResourceValue:forKey:error:设置对应NSURL的NSURLIsExcludedFromBackupKey属性来修改此url的备份策略。如果有很多的文件需要修改,可以把它们都放入一个自定义文件夹,然后设置那个文件夹即可。优化tips 只读取需要的文件 只在需要的时候读取(lazily) 只在内容改变的时候写入 使用新的API(block)替换旧的callback形式的API 将对同一文件小而频繁的读写操作组织在一起,批处理 复用同一文件的NSURL(定位文件并生成URL很耗时) 选择合理的read buffer大小 写入空文件时,避免跳过头部x字节(系统会填0,耗时) 容易计算的值不要记到文件中,计算比从磁盘中读取要快得多参考File System Programming Guide
01-18 12:17
查看更多