一、沙箱

iOS的每一个应用程序都有自己的目录来存放数据,这个目录称为沙箱目录。沙箱目录是一种数据安全策略,它设计的原理是只能允许自己的应用访问目录,而不允许其他的应用访问,这样可以保证数据的安全,应用之间是不能共享数据的。

一些特有的应用(如通讯录)需要特定的API才能共享数据。

下面简单介绍一下,应用程序的沙箱目录,先直观的看一下演示程序的沙箱目录结构。

该应用程序的沙箱路径为:

/Users/"用户名"/Library/Developer/CoreSimulator/Devices/8DFE7883-956E-41E3-B099-18C92609E027/data/Containers/Data/Application/E82B708D-B06C-4837-BA59-74EE22CA7BE4

我们可以看到,该沙箱目录有三个子目录,分别为Documents,Library,tmp

1、Documents

该目录用于存储非常大的文件或需要非常频繁更新的数据,能够进行iTunes或iCloud备份。该目录是只有一个元素的数组,因此获取该目录位置的代码如下:

NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

2、Library

该目录下面有 Preferences和Caches两个子目录,Preferences用于存放应用程序的设置数据,能够进行iTunes或iCloud备份;Caches主要用来存放应用的缓存文件,iTunes不会备份。

获取Library目录位置的代码如下:

NSString *libraryPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];

获取Preferences目录位置的代码如下:

NSString *preferencePath = [NSSearchPathForDirectoriesInDomains(NSPreferencePanesDirectory, NSUserDomainMask, YES) lastObject];

获取Caches目录位置的代码如下:

NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];

3、tmp

该目录是用来存放临时文件的,它不能够进行iTunes或iCloud备份。用户可以访问它,获取该目录的代码如下:

NSString *tmpPath = NSTemporaryDirectory();

二、文件操作

1、创建文件夹

我们在documents目录下创建test文件夹

    NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSLog(@"document文件夹路径为%@",documentPath); NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *testPath = [documentPath stringByAppendingPathComponent:@"test"];
BOOL isSuccess = [fileManager createDirectoryAtPath:testPath withIntermediateDirectories:YES attributes:nil error:nil];
NSLog(@"成功创建文件夹了吗:%@",isSuccess?@"yes":@"no");

创建成功

2、创建文件

接着上面的代码,我们在test文件夹下创建文件test.txt

    NSString *txtPath = [testPath stringByAppendingPathComponent:@"test.txt"];
BOOL isTxtSuccess = [fileManager createFileAtPath:txtPath contents:nil attributes:nil];
NSLog(@"成功创建文件了吗:%@",isTxtSuccess?@"yes":@"no");

创建成功

可以看到test.txt还是空的,下面我们写入数据。

3、写数据到文件

    NSString *testString = @"Hello World												

iOS的沙箱目录和文件操作的更多相关文章

  1. Linux 目录和文件操作

    Linux常用命令--目录和文件操作 [目录]删除.复制.移动 : 1.删除文件夹用:rmdir 文件夹名 但是rmdir不能删除非空的文件夹,那如何删除非空文件夹呢: 2.通常情况下,删除文件用:r ...

  2. [Python] 目录和文件操作

    在Linux系统下用Python写脚本,肯定不能避免各种与目录和文件夹有关的操作.为了以后方便查阅,简单地针对Python中与目录和文件夹有关的操作进行汇总. 需要实现导入的模块为: import o ...

  3. php 目录及文件操作

    // bool is_dir(string $filename) 判断给定文件名是否是一个目录.// resource opendir(string $path[,resource $context] ...

  4. PHP - 目录、文件操作

    目录操作: <?php /** * Read Directory. * Just read the top-level directory. * @param string $path dire ...

  5. python目录和文件操作

    一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法. 要操作目录,必须引入os模块 import os1.得到当前工作目录,即当前Python脚本工作的目录路径: os ...

  6. Linux命令应用大词典-第4章 目录和文件操作

    4.1 pwd:显示(打印)当前工作目录路径 4.2 cd:更改工作目录路径 4.3 ls: 列出目录和文件信息: 4.4 dir:列出目录或文件信息: 4.5 dirs:显示目录列表: 4.6 to ...

  7. R 目录及文件操作

    获取当前路径  getwd() 切换当前路径  setwd() 返回上一级目录  setwd(dirname(getwd())) 获取文件所在路径  dirname() 查看当前目录的子目录  lis ...

  8. Python目录与文件操作

    一.判断一个路径是否存在 os.path.exists(path) 如果路径存在则返回True,否则返回False. import os import getpass # 获取当前系统用户名 user ...

  9. [python]目录及文件操作

    Python OS模块和shutil模块 获取路径 # 获取当前路径 pwd = os.getcwd() # 获取上级路径 a_pwd = os.path.abspath(os.path.dirnam ...

随机推荐

  1. 通过lldb远程调试iOS App

    苹果从Xcode5开始弃用了gcc及gdb, 只能使用llvm用lldb. 在越狱机上虽然仍然可以使用gdb进行调试,但lldb是趋势.下面就介绍一种通过Wifi或者USB,在Mac上使用lldb对i ...

  2. 编码规范系列(一):Eclipse Code Templates设置

    从工作开始,经历了几个项目的开发,现在的项目一般都是一个团队共同开发,而每个人都有自己的编码习惯,为了统一格式,项目组在项目开发之前都会制定一系列的规范.俗话说约定优于配置,但是在执行过程中往往发现效 ...

  3. SqlServer获取表结构语句

    --sql server 2005-- 1. 表结构信息查询 -- ================================================================== ...

  4. RT-Thread学习笔记(2)

    这段时间稍微折腾了一下stm32,稍微知道了一点stm32程序的编写方法,所以再次拿起了rtt,因为这个东西确实很强大. 随手记录一下rtt的一些知识: 1.关于finsh 这是一个命令行系统,很好玩 ...

  5. Android 使用 Gmail 来发送邮件

    Android 使用 Gmail 来发送邮件 1. [代码]SendMail.java package org.apache.android.mail; import android.app.Acti ...

  6. [原]生产环境下的nginx.conf配置文件(多虚拟主机)

    [原]生产环境下的nginx.conf配置文件(多虚拟主机) 2013-12-27阅读110 评论0 我的生产环境下的nginx.conf配置文件,做了虚拟主机设置的,大家可以根据需求更改,下载即可在 ...

  7. iOS常用的存储方式介绍

    在iOS App开发过程中经常需要操作一些需要持续性保留的数据,比如用户对于App的相关设置.需要在本地缓存的数据等等.本文针对OC中经常使用的一下存储方式做了个整理. 常用的存储工具/方式: NSU ...

  8. Servlet---JavaWeb技术的核心基础,JavaWeb框架的基石(一)

    初学JavaWeb开发,请远离各种框架,从Servlet开始.         Web框架是开发者在使用某种语言编写Web应用服务端是关于架构的最佳实践.很多Web框架是从实际的Web项目抽取出来的, ...

  9. 更新mac自带的python

    mac lion自带的python是2.7版本的,有点儿低,要使用一些应用的时候还需要3.3以上的,这时可以用以下的方法更新mac自带的python. 先去python的官网下载最新的python,并 ...

  10. 面向对象设计原则OO

    面向对象设计原则是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton.Decorator ...