现在的位置: 首页 > 综合 > 正文

【iOS知识学习】_iOS沙盒机制

2018年04月22日 ⁄ 综合 ⁄ 共 3374字 ⁄ 字号 评论关闭

IOS中的沙盒机制(SandBox)是一种安全体系,它规定了应用程序只能在为该应用创建的文件夹内读取文件,不可以访问其他地方的内容。所有的非代码文件都保存在这个地方,比如图片、声音、属性列表和文本文件等。
1.每个应用程序都在自己的沙盒内
2.不能随意跨越自己的沙盒去访问别的应用程序沙盒的内容
3.应用程序向外请求或接收数据都需要经过权限认证

显示和隐藏文件夹的方法:
显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true
隐藏Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool false

然后重新启动Finder,点击屏幕左上角苹果标志——强制退出——选择Finder然后点击重新启动,这个时候在重新打开Finder就可以看到被隐藏的文件了。

模拟器里的内容路径如下:

每个应用程序都有自己独有的目录:
/var/mobile/Applications/UUID
当应用程序安装时,UUID随机产生;

当删除应用程序重新安装的时候会重新生成目录

每个app目录下都有以下几个文件夹:

Documents/

Library/

Library/Caches

Library/Preferences

tmp/

.app

每个文件(文件夹)的功能如下:

.app/,这个就是可运行的应用文件,带有签名的文件包,包含应用程序代码和静态数据;
Documents/
:Use this directory to store critical user documents and app data files. Critical data is any data that cannot be recreated by your app, such as user-generated content.
The contents of this directory can be made available to the user through file sharing. The contents of this directory are backed up by iTunes.
:苹果建议将程序中创建的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录;
Library/
:This directory is the top-level directory for files that are not user data files. You typically put files in one of several standard subdirectories but you can also create custom subdirectories for files you want backed up but not exposed to the user. You
should not use this directory for user data files.
The contents of this directory (with the exception of the Caches subdirectory) are backed up by iTunes.
For additional information about the Library directory, see “The Library Directory Stores App-Specific Files.”
:应用程序支持文件;
Library/Preferences/ :存储程序的默认设置或其它状态信息;
Library/Caches/:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除;当系统清理磁盘空间的时候会删除里面的内容。
tmp/
:Use this directory to write temporary files that do not need to persist between launches of your app. Your app should remove files from this directory when it determines they are no longer needed. (The system may also purge lingering files from this directory
when your app is not running.)
In iOS 2.1 and later, the contents of this directory are not backed up by iTunes.
:创建和存放临时文件的地方,应用程序成功启动,临时文件不需要持久保存。

注:

iTunes在与iPhone同步时,备份所有的Documents和Library文件。
iPhone在重启时,会丢弃所有的tmp文件。

下面是获取文件目录的代码以及读写文件的代码:示例Demo免费下载地址:http://download.csdn.net/detail/weasleyqi/7508141

获取根目录:

    NSString *homePath = NSHomeDirectory();
    NSLog(@"Home目录:%@",homePath);

获取Document目录:

    NSArray *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
    NSString *documentsPath = [docPath objectAtIndex:0];

获取Library目录:

    NSArray *libsPath = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
    NSString *libPath = [libsPath objectAtIndex:0];

获取Cache目录:

    NSArray *cacPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *cachePath = [cacPath objectAtIndex:0];

获取Tmp目录:

    NSString *tempPath = NSTemporaryDirectory();
    NSLog(@"temp目录:%@",tempPath);

写入文件:

    NSArray *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
    NSString *documentsPath = [docPath objectAtIndex:0];
    //写入文件
    if (!documentsPath) {
        NSLog(@"目录未找到");
    }else {
        NSString *filePaht = [documentsPath stringByAppendingPathComponent:@"test.txt"];
        NSArray *array = [NSArray arrayWithObjects:@"Title",@"Contents", nil];
        [array writeToFile:filePaht atomically:YES];
    }

读取文件:

    NSArray *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
    NSString *documentsPath = [docPath objectAtIndex:0];
    NSString *readPath = [documentsPath stringByAppendingPathComponent:@"test.txt"];
    NSArray *fileContent = [[NSArray alloc] initWithContentsOfFile:readPath];
    NSLog(@"文件内容:%@",fileContent);

示例Demo下载地址:http://download.csdn.net/detail/weasleyqi/7508141

抱歉!评论已关闭.