美文网首页
iOS 沙盒 和 NSFileManager 文件管理

iOS 沙盒 和 NSFileManager 文件管理

作者: CaptainRoy | 来源:发表于2018-07-24 10:30 被阅读47次

iOS 因为沙盒机制,只能访问通讯录,相册和app内的文件

app 所产生的的数据都存放在于自己的沙盒中,一般沙盒都有3个目录 : Documents , Library,Temp
  • Documents : 这个目录存放用户数据。存放用户可以管理的文件;iTunes备份和恢复的时候会包括此目录
  • Library : 主要使用它的子文件夹,我们熟悉的NSUserDefaults就存在于它的子目录中
  • Library/Caches : 存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除,“删除缓存”一般指的就是清除此目录下的文件
  • Library/Preferences : NSUserDefaults的数据存放于此目录下
  • Temp : App应当负责在不需要使用的时候清理这些文件,系统在App不运行的时候也可能清理这个目录
获取沙盒根路径
NSString *dirHome = NSHomeDirectory(); // /Users/wanglei
获取 Documents 路径
// /Users/wanglei/Documents
NSString *documentDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
Library 路径
// /Users/wanglei/Library
NSString *libraryDirectory = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES)[0];
Library/Caches 路径
// /Users/wanglei/Library/Caches
NSString *cacheDirectory = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];
Tmp 路径
// /var/folders/yq/vw1k4pv51t15bgpchfj_hnvr0000gn/T/
NSString *tmpDirectory = NSTemporaryDirectory();
创建文件夹
- (BOOL)createDirectory:(NSString *)fileName
{
    NSString *documentsDir = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
    NSString *path = [NSString stringWithFormat:@"%@/%@",documentsDir,fileName];
    NSFileManager *fileManager = [NSFileManager defaultManager];
    BOOL isDir;
    if ([fileManager fileExistsAtPath:path isDirectory:&isDir]) {
        return NO;
    } else {
        BOOL result = [fileManager createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];
        return result;
    }
}
创建文件
-(BOOL)createFile:(NSString *)path{
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSString *testPath = [path stringByAppendingPathComponent:@"test.text"];
    BOOL res=[fileManager createFileAtPath:testPath contents:nil attributes:nil];
    return res;
}
写入数据
-(BOOL)writeFile:(NSString *)path{
    NSString *testPath = [path stringByAppendingPathComponent:@"test.text"];
    NSString *content=@"将数据写入到文件!";
    BOOL res=[content writeToFile:testPath atomically:YES encoding:NSUTF8StringEncoding error:nil];
    return res;
}

相关文章

网友评论

      本文标题:iOS 沙盒 和 NSFileManager 文件管理

      本文链接:https://www.haomeiwen.com/subject/htqemftx.html