您的位置:首页 > 移动开发 > IOS开发

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];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: