•IOS 应用目录简介

iOS的沙盒机制,应用只能访问自己应用目录下的文件。iOS不像android,没有SD卡概念,不能直接访问图像、视频等内容。iOS应用产生的内容,如图像、文件、缓存内容等都必须存储在自己的沙盒内。默认情况下,每个沙盒含有3个文件夹:Documents,
Library和 tmp。Library包含Caches、Preferences目录。

  • Documents:应用中用户数据可以放在这里,iTunes备份和恢复的时候会包括此目录
  • tmp:存放临时文件,iTunes不会备份和恢复此目录,此目录下文件可能会在应用退出后删除
  • Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除

•IOS 获取应用沙盒目录

关于定位应用目录主要用到了NSSearchPathForDirectoriesInDomains 和 NSHomeDirectory();

1、NSSearchPathForDirectoriesInDomains 定位到沙盒的Document、Library以及Caches 目录

(1)、定位Document 目录

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

(2)、定位Library 目录

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

(3)、定位Caches 目录,Caches 目录位于Library目录下

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

2、定位到tem目录的方法

使用NSSearchPathForDirectoriesInDomains只能定位Caches、Library、Documents目录, tmp目录,不能按照此方法获得,此时可以采用NSHomeDirectory定位到应用程序主目录,也就是Document 的上一层目录

NSString *temp = NSTemporaryDirectory();

3、获取沙盒根目录:NSHomeDirectory()

使用NSHomeDirectory()可以获取到沙盒的根目录,也就是Document的上一层。
利用NSHomeDirectory()我们可以获取沙盒中的任意文件的路径。

例如:获取tmp的路径如下所示:

NSString *filePath=[NSHomeDirectory() stringByAppendingPathComponent:@"tmp"];

•IOS NSFileManager文件操作

还是直接上代码吧!

#pragma mark 使用NSSearchPathForDirectoriesInDomains创建文件目录
- (void) createDir {
    
    // NSDocumentDirectory 沙盒 Documents 目录
    // NSLibraryDirectory  沙盒 Library   目录
    // NSCachesDirectory   沙盒 Library/Caches   目录
    // 使用NSSearchPathForDirectoriesInDomains只能定位Caches、Library、Documents目录,tmp目录,不能按照此方法获得
    NSString * docsdir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString *dataFilePath = [docsdir stringByAppendingPathComponent:@"head"]; // 在指定目录下创建 "head" 文件夹
    
    NSFileManager *fileManager = [NSFileManager defaultManager];
    
    BOOL isDir = NO;
    
    // fileExistsAtPath 判断一个文件或目录是否有效,isDirectory判断是否一个目录
    BOOL existed = [fileManager fileExistsAtPath:dataFilePath isDirectory:&isDir];
    
    if ( !(isDir == YES && existed == YES) ) {
        
        // 在 Document 目录下创建一个 head 目录
        [fileManager createDirectoryAtPath:dataFilePath withIntermediateDirectories:YES attributes:nil error:nil];
    }
    
    NSLog(@"+++++++++++++++++++%@",dataFilePath);
}
#pragma mark 使用 NSHomeDirectory() 创建文件目录
- (void) createDir { // NSHomeDirectory():应用程序目录, @"tmp/temp":在tmp文件夹下创建temp 文件夹
NSString *filePath=[NSHomeDirectory() stringByAppendingPathComponent:@"tmp/temp"]; NSFileManager *fileManager = [NSFileManager defaultManager]; BOOL isDir = NO; // fileExistsAtPath 判断一个文件或目录是否有效,isDirectory判断是否一个目录
BOOL existed = [fileManager fileExistsAtPath:filePath isDirectory:&isDir]; if ( !(isDir == YES && existed == YES) ) { // 在 tmp 目录下创建一个 temp 目录
[fileManager createDirectoryAtPath:filePath withIntermediateDirectories:YES attributes:nil error:nil];
} NSLog(@"+++++++++++++++++++%@",filePath);
}

关于目录/文件的其他操作

#pragma mark fileManager 的其他操作
- (void) fileManager:(NSString *) filePath { // filePath: 文件/目录的路径 NSFileManager *fileManager = [NSFileManager defaultManager]; // 取得一个目录下得所有文件名
NSArray *files = [fileManager subpathsAtPath:filePath]; // 读取某个文件
NSData *data = [fileManager contentsAtPath:filePath]; // 删除文件/文件夹
[fileManager removeItemAtPath:filePath error:nil];
}

转载请指明出处:点击打开链接

IOS 创建目录/文件夹的更多相关文章

  1. iOS应用文件夹

    IOS5多了一个比较重要的功能iCloud,但是同时也出现一个问题,很多的APP都把很大量的数据存在APP底下的Documents(/Documents )文件夹里面,这样苹果会reject掉你的AP ...

  2. iOS开发文件夹--Copy items if needed

    蓝色文件夹 蓝色文件夹(folder)一般作为资源文件夹使用,与黄色文件夹的主要区别是不参与编译,所以说如果你在这些文件夹下编写的逻辑代码是不参与编译的,其他文件也不能直接引用它们,若引用其中文件需要 ...

  3. iOS --创建文件夹 ,删除文件夹

    //创建文件夹 --> 返回 文件夹 - (NSString *)pathToPatientPhotoFolder { NSString *documentsDirectory = [NSSea ...

  4. Python创建目录文件夹

    Python对文件的操作还算是方便的,只需要包含os模块进来,使用相关函数即可实现目录的创建. 主要涉及到三个函数 1.os.path.exists(path) 判断一个目录是否存在 2.os.mak ...

  5. python 创建目录文件夹

    主要涉及到三个函数 1.os.path.exists(path) 判断一个目录是否存在 2.os.makedirs(path) 多层创建目录 3.os.mkdir(path) 创建目录 DEMO 直接 ...

  6. ios App 文件夹

    转:http://stackoverflow.com/questions/16561779/nssearchpathfordirectoriesindomains-nsuserdomainmask D ...

  7. IOS之文件夹创建、删除,图片在本地的保存和加载

    本文转自http://blog.csdn.net/toddmi/article/details/8204102 = (NSCachesDirectory, NSUserDomainMask, YES) ...

  8. iOS 项目的文件夹结构能看出你的开发经验

    近期有师弟去面试iOS开发,他谈论到,面试官既然问他怎么分文件夹结构的,并且还详细问到每一个子文件夹的文件名称. 文件夹结构确实非常重要.面试官问他这些无疑是想窥探他的开发经验.清晰的文件夹结构,可让 ...

  9. Linux关于文件,文件夹操作命令

    文件 文件夹 相关操作命令 查看文件 cd 切换目录位置 ls 目录    查看指定目录所有文件  --缺省当前目录 ls -l 目录 查看指定目录所有文件的详细信息 --同 ll 命令 ls -a ...

随机推荐

  1. codeforces gym100418J

    题目简述 给定N 求1到N中有多少个幸运数字 幸运数字的定义为 这个数能被它二进制表示下1的个数整除 其中(1 ≤ N ≤ 1019) -------------------------------- ...

  2. getAttribute 与getParmeter 区别

    1.getAttribute是取得jsp中 用setAttribute設定的attribute 2.parameter得到的是string:attribute得到的是object 3.request. ...

  3. nginx 虚拟主机+反向代理+负载均衡

    nginx是一款免费.开源的http服务器,它是由俄罗斯程序设计师开发的,官方测试,nginx能支撑5万的并发量,主要功能有虚拟主机.反向代理和负载均衡等. nginx配置 # 全局块 ... # e ...

  4. Linux(Ubuntu)常用命令(一)

    Linux先知: Linux历史: 关于这个我就不再多说了,其实是一个很有意思的故事串,网上找下一大堆. 类Unix系统目录结构: ubuntu没有盘符这个概念,只有一个根目录/,所有文件都在它下面 ...

  5. CET-6 分频周计划生词筛选(Week 2)

    点我阅读 Week 2 2016.09.04/05 p58 ongoing / forward p59 prosperity p60 rear p61 rival + segregation + se ...

  6. 方法Join()

    等待线程结束:jion() 谦让: yeild() 睡眠: sleep() jion和sleep和yeild之间有什么区别呢? 首先介绍一下jion(): 如果想让主线程等待子线程执行完毕之后再继续运 ...

  7. SSL certificate problem: self signed certificate

    执行Git命令时出现各种 SSL certificate problem 的解决办法 2014年10月11日 10:45:40   比如我在windows下用git clone gitURL 就提示  ...

  8. List<Map>去重并合并数量

    今天在查询出的sql中,出现了部门名称和部门ID有重合的数据!当然这样在页面上展示也会容易一起误导!查询出的数据结构如下图 希望根据deptid中 >最后一个节点id把deptname 合并成& ...

  9. 钉钉机器人SDK 封装预警消息发送工具

    1 群机器人     (1) 引言     钉钉聊天群内支持的群机器人, 类似QQ 群机器人, 可以发天气, 讲笑话那样;     钉钉群机器人支持自定义机器人, 允许开发者管理机器人做预警消息通知; ...

  10. Ubuntu18.04+CUDA9.0+cuDNN7.1.3+openface安装总结

    目录 前言 编译工具CMake C++标准库安装 下载OpenFace代码 OpenCV安装 luarocks-Lua 包管理器,提供一个命令行的方式来管理 Lua 包依赖.安装第三方 Lua 包等功 ...