[Objective-C] 013_文件系统(File System)

  在前面三篇关于数据持久化,我们都用涉及到文件(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 *[email protected]"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

时间: 2024-10-10 15:39:18

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

node之文件系统File System

一.文件读取 文件读取又分为同步读取和异步读取 //1.文件同步读取 const bufferStr = fs.readFileSync('./file/test.txt'); console.log(bufferStr); // 因为没有声明encoding 所以返回的是二进制数据 //<Buffer 48 65 6c 6c 6f 20 57 6f 72 6c 64 21> const str = fs.readFileSync('./file/test.txt',{ encoding:'u

操作系统原理(三)——文件系统(File system)

文件系统(File system) 1. 文件 首先要说文件的定义,文件是进程创建的信息逻辑单元. 由于磁带和光盘的性能较低,磁盘使用的较多.这里讨论文件储存在磁盘中的情况.磁盘可被认为是固定块儿大小的线性序列. 在操作系统看来,文件就是一个个字节流,操作系统不管这个文件的内容(不管它是.mp3音频文件,或者.jpg图片文件,在应用程序看来才有这种区分).文件在操作系统眼中只有3种:普通文件.目录文件.特殊文件. 文件的命名: 在Linux中,文件名大小写敏感:目录分隔符“/”绝对不能出现在文件

Linux文件系统只读Read-only file system

问题描述: 1.系统无法进行磁盘的读写操作(touch,cp,chmod)等等 2.服务器无法启动(也是因为无法创建文件) 3.只有涉及到系统磁盘的写操作,都会报错"Read-only file system" 问题原因: 1.系统没有正常关机,导致虚拟磁盘出现文件系统错误: 2.机器硬盘故障导致硬盘只读 一般情况是由于系统发现磁盘硬件(Riad卡,硬盘)故障或文件系统中文件被损坏后而采取的保护机制导致的.为了保护数据不破坏分区中已有内容,Linux在挂载文件系统是就只用read-on

【整理学习HDFS】Hadoop Distributed File System 一个分布式文件系统

Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统.它和现有的分布式文件系统有很多共同点.但同时,它和其他的分布式文件系统的区别也是很明显的.HDFS是一个高度容错性的系统,适合部署在廉价的机器上.HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用.HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的.HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的.HDFS是Apac

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

HTML5之本地文件系统API - File System API 2014-06-03 17:54 19991人阅读 评论(0) 收藏 举报 目录(?)[+] 新的HTML5标准给我们带来了大量的新特性和惊喜,例如,画图的画布Canvas,多媒体的audio和video等等.除了上面我们提到的,还有比较新的特性 - File System API,它能够帮助我们来突破沙箱访问我们本地的文件系统,从而有效的弥补桌面和web应用之间的鸿沟.在今天这篇文章中,我们将会介绍基本的File system

Linux文件系统只读Read-only&#160;file&#160;system

问题描述: 1.系统无法进行磁盘的读写操作(touch,cp,chmod)等等 2.服务器无法启动(也是因为无法创建文件) 3.只有涉及到系统磁盘的写操作,都会报错"Read-only file system" 问题原因: 1.系统没有正常关机,导致虚拟磁盘出现文件系统错误: 2.机器硬盘故障导致硬盘只读 一般情况是由于系统发现磁盘硬件(Riad卡,硬盘)故障或文件系统中文件被损坏后而采取的保护机制导致的.为了保护数据不破坏分区中已有内容,Linux在挂载文件系统是就只用read-on

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

KASS分布式文件系统(Kass File System),简称KFS,是开始公司自主研发的分布式文件存储服务平台.KFS系统架构及功能服务类似Hadoop/GFS/DFS,它通过HTTP-WEB为上层应用系统(KASS文档管理系统及各种其他应用系统)提供底层文件存储服务,搭建企业私有云存储服务平台. KFS分布式文件系统提供的核心价值:?     ●    使用多台KFS服务器共同搭建统一的文件逻辑树 ?       ●    支持KFS服务器集群及文件副本实现系统高可靠性 ?       ●

NFS - Network File System网络文件系统

NFS(Network File System/网络文件系统): 设置Linux系统之间的文件共享(Linux与Windows中间文件共享采用SAMBA服务): NFS只是一种文件系统,本身没有传输功能,是基于RPC协议实现的,才能达到两个Linux系统之间的文件目录共享: NFS为C/S架构: NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享. NFS在文件传送或信息传送过程中依赖于RPC协议.

Ubuntu&amp;Linux系统出现文件系统只读Read-only file system 的快速解决方法

问题描述: 周末运行盘平台服务程序,周一来操作系统卡顿,主进程已退出,重启进程时提示Read-only file system:新建目录和其他chmod -R等等操作都提示Read-only file system. 问题原因: 重启系统,提示根分区error,原因是磁盘出现文件系统错误. 解决方法: 使用fsck手动修复,具体操作如下: 切换到root用户,运行fsck.ext4 -y /dev/vdb1 说明:文件系统采用fsck.ext4,/dev/vdb1是系统/根分区.运行完毕后reb