在前面三篇关于数据持久化,我们都用涉及到文件(plist文件,数据库文件),它们都是把它们存储在document目录下。iOS的文件机制是沙盒机制,应用只能访问自己应用目录下的文件。iOS应用产生的内容,如图像、文件、缓存内容等都必须存储在自己的沙盒内。默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp。Library包含Caches、Preferences目录。

Documents:苹果建议将程序创建产生的文件以及应用浏览产生的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录
Library:存储程序的默认设置或其它状态信息;
Library/Caches:存放缓存文件,保存应用的持久化数据,用于应用升级或者应用关闭后的数据保存,不会被itunes同步,所以为了减少同步的时间,可以考虑将一些比较大的文件而又不需要备份的文件放到这个目录下。
tmp:提供一个即时创建临时文件的地方,但不需要持久化,在应用关闭后,该目录下的数据将删除,也可能系统在程序不运行的时候清除。

我们实际中要如何来或取沙盒,如何在沙盒里面进行相应的操作,下面一一分解。

1.获取app的沙盒根目录

NSString *appRootDir=NSHomeDirectory();
NSLog(@"我的沙盒路径根路径------》: %@",appRootDir);

2.获取Documents目录路径

//第一种
NSString *appRootDir=NSHomeDirectory();
NSLog(@"我的沙盒路径根路径------》: %@",appRootDir);
NSString *documentDir = [appRootDir stringByAppendingPathComponent:@"Documents"];
NSLog(@"documentDir: -----》 %@",documentDir); //第二种
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSLog(@"documentsDirectory: -----》 %@",documentsDirectory);

3.获取Library(包含Caches、Preferences)目录路径:

//第一种
NSString *appRootDir=NSHomeDirectory();
NSLog(@"我的沙盒路径根路径------》: %@",appRootDir);
NSString *documentDir = [appRootDir stringByAppendingPathComponent:@"Library"];
NSLog(@"documentDir: -----》 %@",documentDir); //第二种
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *libraryDirectory = [paths objectAtIndex:0];
NSLog(@"libraryDirectory: -----》 %@",libraryDirectory); //Caches
NSString *cachesPath = [libraryDirectory stringByAppendingString:@"Caches"]; //Preferences
NSString *preferencesPath = [libraryDirectory stringByAppendingString:@"Preferences"]; NSLog(@"cachesPath: -----》 %@",cachesPath);
NSLog(@"preferencesPath: -----》 %@",preferencesPath);

4.获取tmp目录路径:

//第一种
NSString *appRootDir=NSHomeDirectory();
NSLog(@"我的沙盒路径根路径------》: %@",appRootDir);
NSString *documentDir = [appRootDir stringByAppendingPathComponent:@"tmp"];
NSLog(@"documentDir: -----》 %@",documentDir); //第二种
NSString *tmpDirectory = NSTemporaryDirectory();
NSLog(@"tmpDirectory: -----》 %@",tmpDirectory);

5.创建文件(tmp文件夹中)

NSString *tmpDirectory = NSTemporaryDirectory();
NSLog(@"tmpDirectory: -----》 %@",tmpDirectory); NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *testFilePath = [tmpDirectory stringByAppendingPathComponent:@"testFile.txt"];
BOOL res=[fileManager createFileAtPath:testFilePath contents:nil attributes:nil];
if (res) {
NSLog(@"测试文件创建成功: %@" ,testFilePath);
}else {
NSLog(@"测试文件创建失败");
}

6.创建文件夹

NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *testFolderDirectory = [documentsPath stringByAppendingPathComponent:@"Test"];
// 创建目录
BOOL res=[fileManager createDirectoryAtPath:testFolderDirectory withIntermediateDirectories:YES attributes:nil error:nil];
if (res) {
NSLog(@"Test文件夹创建成功");
}else {
NSLog(@"Test文件夹创建失败");
}

7.删除文件

NSString *tmpDirectory = NSTemporaryDirectory();
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *testFilePath = [tmpDirectory stringByAppendingPathComponent:@"testFile.txt"]; //判断文件是否存在
if ([fileManager fileExistsAtPath:testFilePath]) {
BOOL res=[fileManager removeItemAtPath:testFilePath error:nil];
if (res) {
NSLog(@"testFile文件删除成功");
}else
NSLog(@"testFile文件删除失败");
}

8.写入文件

NSString *tmpDirectory = NSTemporaryDirectory();
NSLog(@"tmpDirectory: -----》 %@",tmpDirectory); NSString *content=@"www.babybus.com SuperDo";
NSString *testFilePath = [tmpDirectory stringByAppendingPathComponent:@"testFile.txt"];
BOOL res=[content writeToFile:testFilePath atomically:YES encoding:NSUTF8StringEncoding error:nil];
if (res) {
NSLog(@"testFile文件写入成功");
}else {
NSLog(@"testFile文件写入失败");
}

以上是iOS 文件的一些简单常见操作。更多详细内容请参考(https://developer.apple.com/library/ios/#documentation/FileManagement/Conceptual/FileSystemProgrammingGUide/FileSystemOverview/FileSystemOverview.html#//apple_ref/doc/uid/TP40010672-CH2-SW2

本站文章为宝宝巴士 SD.Team原创,转载务必在明显处注明:(作者官方网站:宝宝巴士
转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4659923.html

[Objective-C] 013_文件系统(File System)的更多相关文章

  1. 在 Linux 中,最直观、最可见的部分就是 文件系统(file system)

    在 Linux 中,最直观.最可见的部分就是 文件系统(file system).下面我们就来一起探讨一下关于 Linux 中国的文件系统,系统调用以及文件系统实现背后的原理和思想.这些思想中有一些来 ...

  2. 磁盘、分区及Linux文件系统 [Disk, Partition, Linux File System]

    1.磁盘基础知识 1.1 物理结构 硬盘的物理结构一般由磁头与碟片.电动机.主控芯片与排线等部件组成:当主电动机带动碟片旋转时,副电动机带动一组(磁头)到相对应的碟片上并确定读取正面还是反面的碟面,磁 ...

  3. [CareerCup] 8.9 An In-memory File System 内存文件系统

    8.9 Explain the data structures and algorithms that you would use to design an in-memory file system ...

  4. KASS分布式文件系统(Kass File System)

    KASS分布式文件系统(Kass File System),简称KFS,是开始公司自主研发的分布式文件存储服务平台.KFS系统架构及功能服务类似Hadoop/GFS/DFS,它通过HTTP-WEB为上 ...

  5. NFS - Network File System网络文件系统

    NFS(Network File System/网络文件系统): 设置Linux系统之间的文件共享(Linux与Windows中间文件共享采用SAMBA服务): NFS只是一种文件系统,本身没有传输功 ...

  6. HTML5之本地文件系统API - File System API

    HTML5之本地文件系统API - File System API 新的HTML5标准给我们带来了大量的新特性和惊喜,例如,画图的画布Canvas,多媒体的audio和video等等.除了上面我们提到 ...

  7. File System 之本地文件系统

    上一篇文章提到了,最近做一个基于 File System/IndexedDB的应用,上一篇是定额和使用的查询. 因为LocalFileSystem只有chrome支持,有点尴尬,如果按需加载又何来尴尬 ...

  8. [LeetCode] Design In-Memory File System 设计内存文件系统

    Design an in-memory file system to simulate the following functions: ls: Given a path in string form ...

  9. 云服务器 linux文件系统异常an error occurren during the file system check导致服务器启动失败

    云服务器 linux文件系统异常an error occurren during the file system check导致服务器启动失败 文件系统宕机,重启后报错,无法启动 处理流程: 1.编辑 ...

随机推荐

  1. 超轻量级网络SqueezeNet网络解读

    SqueezeNet网络模型非常小,但分类精度接近AlexNet. 这里复习一下卷积层参数的计算 输入通道ci,核尺寸k,输出通道co,参数个数为: 以AlexNet第一个卷积为例,参数量达到:3*1 ...

  2. python(while 循环语句)

    一.循环语句 1.while 循环 当我们在 python 中需要重复执行一些动作的时候,这时我们就要用到循环 while 循环的结构,当条件成立的时候,就会执行里面的代码 while 循环不断的运行 ...

  3. 07 模型层 orm相关查询 F查询Q查询 django开启事务

    一.Django终端打印SQL语句 如果你想知道你对数据库进行操作时,Django内部到底是怎么执行它的sql语句时可以加下面的配置来查看 在Django项目的settings.py文件中,在最后复制 ...

  4. requests抓取数据示例

    1:获取豆瓣电影名称及评分 # 抓取豆瓣电影名称及评分 url="https://movie.douban.com/j/search_subjects" start=input(& ...

  5. 自定义比较器(IComparer接口的实现)

    class FileNameSort : IComparer { [System.Runtime.InteropServices.DllImport("Shlwapi.dll", ...

  6. 201771030117-祁甜 实验一 软件工程准备—<阅读《现代软件工程——构建之法》提出的三个问题>

    项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/nwnu2020SE 这个作业要求链接 https://www.cnblogs.com/nwnu- ...

  7. ASP.NET Core on K8S学习之旅(12)Ingress

    本篇已加入<.NET Core on K8S学习实践系列文章索引>,可以点击查看更多容器化技术相关系列文章. 一.关于Ingress Kubernetes对外暴露Service主要有三种方 ...

  8. springboot整合mybatis,利用mybatis-genetor自动生成文件

    springboot整合mybatis,利用mybatis-genetor自动生成文件 项目结构: xx 实现思路: 1.添加依赖 <?xml version="1.0" e ...

  9. HDU-6351 Beautiful Now 全排列暴力

    Beautiful Now 题意 给出一个最大为10^9的数字n,以及一个k,你最多交换n中任意两个位置的数字k次,问形成的最大数字和最小数字. 思路 看到这题,我靠这题暴力交换一下,不难啊,咋没人做 ...

  10. Queue-PriorityQueue源码解析

    Queue队列通常是先进先出(FIFO),但也有特殊的非FIFO,如本文也分析的PriorityQueue. Queue接口 Queue接口定义的方法: 添加元素接口: add(E e) -> ...