博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OC中的沙盒机制
阅读量:6271 次
发布时间:2019-06-22

本文共 5080 字,大约阅读时间需要 16 分钟。

hot3.png

沙盒机制

每个沙盒含有3个文件夹:Documents,   Library,  和   tmp。因为应用的沙盒机制,应用只能在几个目录下读写文件。

Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录。

Library:存储程序的默认设置或其它状态信息。

Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除。

tmp:提供一个即时创建临时文件的地方。

获取Documents目录

- (void)viewDidLoad {    [super viewDidLoad];    //方法1)直接获取Documents文件夹路径    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);    NSLog(@"%@", paths);        //方法2)直接获取Documents文件夹路径    NSString *documentsDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];    NSLog(@"%@", documentsDirectory);        //方法3)拼接字符串获取Documents文件夹路径    NSArray *pathsTwo = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);    NSString *docDir = [pathsTwo objectAtIndex:0];    NSLog(@"%@", docDir);    }

获取沙盒文件

- (void)viewDidLoad {    [super viewDidLoad];        //获取家目录路径的函数    NSString *homeDir = NSHomeDirectory();            //获取Documents目录路径的方法    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);    NSString *docDir = [paths objectAtIndex:0];        //获取Caches目录路径的方法    NSArray *paths1 = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);    NSString *cachesDir = [paths1 objectAtIndex:0];        //获取tmp目录路径的方法    NSString *tmpDir = NSTemporaryDirectory();    }

创建文件夹

- (void)viewDidLoad {    [super viewDidLoad];        //方法)创建文件夹        //先找出APP的路径,然后在后面加一个/newWwrd(要创建的文件夹名)    NSString *New = [NSString stringWithFormat:@"%@/Documents/newWord",NSHomeDirectory()];        //在Documents文件夹下面创建一个文件夹    //withIntermediateDirectories设置为YES,这样就能建立多级目录了。如果是一级目录,可以设置为NO    BOOL yesOrNo = [[NSFileManager defaultManager]createDirectoryAtPath:New withIntermediateDirectories:YES attributes:nil error:nil];        //在桌面上command+shift+G,输入一下路径,验证有没有创建成功    NSLog(@"%@", New);        }

在创建文件夹内,创建一个文件

- (void)viewDidLoad {    [super viewDidLoad];        //方法)创建文件夹        //先找出APP的路径,然后在后面加一个/newWwrd(要创建的文件夹名)    NSString *New = [NSString stringWithFormat:@"%@/Documents/newWord",NSHomeDirectory()];        //在Documents文件夹下面创建一个文件夹    //withIntermediateDirectories设置为YES,这样就能建立多级目录了。如果是一级目录,可以设置为NO    BOOL yesOrNo = [[NSFileManager defaultManager]createDirectoryAtPath:New withIntermediateDirectories:YES attributes:nil error:nil];        //在桌面上command+shift+G,输入一下路径,验证有没有创建成功    NSLog(@"%@", New);            //方法)在新建的New文件夹下新建一个文件        //先在新建的New文件夹路径下面,添加一个/123.mp3(要创建的文件名及格式)的路径    NSString *NewOne = [NSString stringWithFormat:@"%@/123.mp3",New];        //在包含123.mp3路径下,开始创建文件    [[NSFileManager defaultManager]createFileAtPath:NewOne contents:nil attributes:nil];        }

移除文件

- (void)viewDidLoad {    [super viewDidLoad];        //方法)创建文件夹        //先找出APP的路径,然后在后面加一个/newWwrd(要创建的文件夹名)    NSString *New = [NSString stringWithFormat:@"%@/Documents/newWord",NSHomeDirectory()];        //在Documents文件夹下面创建一个文件夹    //withIntermediateDirectories设置为YES,这样就能建立多级目录了。如果是一级目录,可以设置为NO    BOOL yesOrNo = [[NSFileManager defaultManager]createDirectoryAtPath:New withIntermediateDirectories:YES attributes:nil error:nil];        //在桌面上command+shift+G,输入一下路径,验证有没有创建成功    NSLog(@"%@", New);            //方法)在新建的New文件夹下新建一个文件        //先在新建的New文件夹路径下面,添加一个/123.mp3(要创建的文件名及格式)的路径    NSString *NewOne = [NSString stringWithFormat:@"%@/123.mp3",New];        //在包含123.mp3路径下,开始创建文件    [[NSFileManager defaultManager]createFileAtPath:NewOne contents:nil attributes:nil];                //方法)删除文件    //先通过路径找到文件,再删除(已经删除123.mp3)    [[NSFileManager defaultManager]removeItemAtPath:NewOne error:nil];        }

读取bundle文件

- (void)viewDidLoad {    [super viewDidLoad];        //读取bundle文件        //方法1)按照文件路径读取    NSString *pathBundle = [[NSBundle mainBundle]pathForResource:@"登鹳雀楼" ofType:@"txt"];    NSString *outPathBundle = [NSString stringWithContentsOfFile:pathBundle encoding:NSUTF8StringEncoding error:nil];    NSLog(@"%@", outPathBundle);            //方法2)按照URL方法读取    NSURL *pathUrl = [[NSBundle mainBundle]URLForResource:@"登鹳雀楼" withExtension:@"txt" subdirectory:nil localization:nil];        NSString *outPathUrl = [NSString stringWithContentsOfURL:pathUrl encoding:NSUTF8StringEncoding error:nil];    NSLog(@"%@", outPathUrl);        }

Data存取

- (void)viewDidLoad {    [super viewDidLoad];        //先创建一个文件夹    NSString *New = [NSString stringWithFormat:@"%@/Documents/NewWord",NSHomeDirectory()];        BOOL yesOrNo = [[NSFileManager defaultManager]createDirectoryAtPath:New withIntermediateDirectories:YES attributes:nil error:nil];            //在文件夹下面创建一个文件    NSString *filePath = [NSString stringWithFormat:@"%@/123.mp3", New];        [[NSFileManager defaultManager]createFileAtPath:filePath contents:nil attributes:nil    ];        //Data读取数据    NSString *mp3String = [[NSBundle mainBundle]pathForResource:@"追风少年" ofType:@"mp3"];    NSData *data = [[NSData alloc]initWithContentsOfFile:mp3String];            //将Data写入沙盒文件    [data writeToFile:filePath atomically:YES];        //打印路径,检查有没有创建好    NSLog(@"%@", New);        }

转载于:https://my.oschina.net/LBBB/blog/653838

你可能感兴趣的文章
golang(2):beego 环境搭建
查看>>
天津政府应急系统之GIS一张图(arcgis api for flex)讲解(十)态势标绘模块
查看>>
程序员社交宝典
查看>>
ABP理论学习之MVC控制器(新增)
查看>>
Netty中的三种Reactor(反应堆)
查看>>
网页内容的html标签补全和过滤的两种方法
查看>>
前端源码安全
查看>>
【CodeForces 618B】Guess the Permutation
查看>>
【转】如何实现一个配置中心
查看>>
Docker —— 用于统一开发和部署的轻量级 Linux 容器【转】
查看>>
Threejs 官网 - Three.js 的图形用户界面工具(GUI Tools with Three.js)
查看>>
Atitit.Java exe bat 作为windows系统服务程序运行
查看>>
session的生命周期
查看>>
数据库的本质、概念及其应用实践(二)
查看>>
iOS开发多线程--(NSOperation/Queue)
查看>>
php的ajax简单实例
查看>>
maven常用构建命令
查看>>
C#:关联程序和文件
查看>>
推荐科研软件
查看>>
gradle
查看>>