1、应用程序沙盒机制
ios应用程序只能对自己创建的文件系统读取文件,这个独立,封闭,安全的空间,我们称为沙盒。它一般存放着你程序包文件(可执行文件)、图片、声音、视频、polist、sqlite数据库以及其他文件。
模拟器沙盒的位置
/Users/用户s/Library/Application Support/iphone Simulator
/Users/用户s/Library/Application Support/iphone Simulator
如下图所示:
Library 设置程序的默认设置和其他状态信息
tmp 创建临时文件的目录,当我们的Ios设备重启时,文件会被消除
获取沙盒目录
//获得程序的根目录
NSString *homePath = NSHomeDirectory();
NSLog(@"home %@",homePath);
//获得Documents目录
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask,YES);
NSLog(@"document : %@",[paths lastObject]);
//获取Library目录
paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask,YES);
NSLog(@"Library : %@",[paths lastObject]);
//获取tmp路径
NSLog(@"home %@",NSTemporaryDirectory());
2、NSFileManager 文件操作
与java中的File类似,主要用于文件操作
主要功能
- 创建一个新的文件
- 重新命名文件
- 移动文件
- 复制文件
- 删除文件
- 文件是否存在
//创建文件
- (BOOL)createFileAtPath:(NSString *)path contents:(NSData *)data attributes:(NSDictionary *)attr;
//创建文件夹
- (BOOL)createDirectoryAtPath:(NSString *)path withIntermediateDirectories:(BOOL)createIntermediates attributes:(NSDictionary *)attributes error:(NSError **)error NS_AVAILABLE(10_5, 2_0);
//移动文件
- (BOOL)moveItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error NS_AVAILABLE(10_5, 2_0);
//复制文件
- (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error NS_AVAILABLE(10_5, 2_0);
//删除文件
- (BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0);
//文件是否存在
- (BOOL)fileExistsAtPath:(NSString *)path;
3、NSFileHandler 文件处理
与Java的FIleInputStream、FileOutputStream类似,用于读取,写入数据。
常用处理方法
+ (id)fileHandleForReadingAtPath:(NSString*)path;// 打开一个文件准备读取
+ (id)fileHandleForWritingAtPath:(NSString*)path; // 打开一个文件准备写入
+ (id)fileHandleForUpdatingAtPath:(NSString*)path; // 打开一个文件准备更新(读取、写入)
- (NSData*)availableData; // 从设备或通道返回可用的数据
- (NSData*)readDataToEndOfFile; // 从当前的节点读取到文件未尾
- (NSData*)readDataOfLength:(NSUInteger)length; // 从当前节点开始读取指定长度数据
- (void)writeData:(NSData*)data; // 写入数据
- (unsigned long long)offsetInFile; // 获取当前文件的偏移量(文件大小)
- (void)seekToFileOffset:(unsigned long long)offset; //跳到指定文件的偏移量
- (unsigned long long)seekToEndOfFile; //跳到文件未尾
- (void)truncateFileAtOffset:(unsigned long long)offset;// 将文件的长度设为offset字节
- (void)closeFile;// 关闭文件