存储路径与文件目录操作ZT
转自:https://www.cnblogs.com/zrr-notes/p/5953445.html
(一)基本存储位置
我们的app在手机中存放的路径是:/var/mobile/Applications/4434-4453A-B453-4ADF535345ADAF344
后面的目录4434-4453A-B453-4ADF535345ADAF344是iPhone自动生成的,里面包含了四个文件夹:
(1)AppName.app 目录:这是应用程序的程序包目录,包含应用程序本身。由于应用改程序必须经过签名。所以再运行程序时,是不可以对这个目录进行内容修改的,否则会造成应用无法启动。
(2)Documents目录:这是文档目录。有关应用的所有数据文件应该写入到这个目录下,这个目录用于存储用户数据或者其他应该定期备份的信息。iTunes会同步改应用程序的此文件内容,适合存储一些重要的数据
(3)Libarary目录:库目录,这个目录下面还有两个子目录:Caches 和 Preferences
Preferences 目录:包含应用程序的编号设置文件,存放NSUserDefaults保存的.plist文件。iTunes同步该应用时会同步该文件夹中的内容。
Caches 目录:缓存目录。用于存储应用程序专用的支持文件,保存应用程序再次启动过程中需要的信息。ITunes不会同步改文件夹,保存一些不需要备份的数据
(4)tmp目录:临时目录。这个目录用于存放临时文件,保存应用程序再次启动过程中不再需要的信息。iTunes不会同步此文件夹,系统可能在应用没运行时就删除该目录下的文件,所以此目录适合保存应用中的一些临时文件,用完就删除。
下面就是这些文件夹获取路径的方法:
1.获取AppName.app 目录路径:
NSString *path = [[NSBundle mainBundle] bundlePath];
2.获取Documents目录路径的方法:
NSString *documentPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
3.Library/Caches目录路径方法:
NSString *cachePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;
4.Library/Application Support目录路径方法:
[NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES) objectAtIndex:0]
4.tmp目录路径的方法:
NSString *tmpPaht = NSTemporaryDirectory();
5.获取沙盒主目录路径
NSString *homePaht = NSHomeDirectory();
例子:
NSFileManager* fm=[NSFileManager defaultManager];
if(![fm fileExistsAtPath:[self dataFilePath]]){
//下面是对该文件进行制定路径的保存
[fm createDirectoryAtPath:[self dataFilePath] withIntermediateDirectories:YES attributes:nil error:nil];
//取得一个目录下得所有文件名
NSArray *files = [fm subpathsAtPath: [self dataFilePath] ];
//读取某个文件
NSData *data = [fm contentsAtPath:[self dataFilePath]];
//或者
NSData *data = [NSData dataWithContentOfPath:[self dataFilePath]];
}
1、常见的NSFileManager文件方法
-(NSData *)contentsAtPath:path //从一个文件读取数据
-(BOOL)createFileAtPath: path contents:(NSData *)data attributes:attr //向一个文件写入数据
-(BOOL)removeItemAtPath:path error:err //删除一个文件
-(BOOL)moveItemAtPath:from toPath:to error:err //重命名或者移动一个文件(to不能是已存在的)
-(BOOL)copyItemAtPath:from toPath:to error:err //复制文件(to不能是已存在的)
-(BOOL)contentsEqualAtPath:path andPath:path2 //比较两个文件的内容
-(BOOL)fileExistAtPath:path //测试文件是否存在
-(BOOL)isReadableFileAtPath:path //测试文件是否存在,并且是否能执行读操作
-(BOOL)isWriteableFileAtPath:path //测试文件是否存在,并且是否能执行写操作
-(NSDictionary *)attributesOfItemAtPath:path error:err //获取文件的属性
-(BOOL)setAttributesOfItemAtPath:attr error:err //更改文件的属性
2.使用目录
-(NSString *)currentDirectoryPath //获取当前目录
-(BOOL)changeCurrentDirectoryPath:path //更改当前目录
-(BOOL)copyItemAtPath:from toPath:to error:err //复制目录结构(to不能是已存在的)
-(BOOL)createDirectoryAtPath:path withIntermediateDirectories:(BOOL)flag attribute:attr //创建一个新目录
-(BOOL)fileExistAtPath:path isDirectory:(BOOL*)flag //测试文件是不是目录(flag中储存结果YES/NO)
-(NSArray *)contentsOfDirectoryAtPath:path error:err //列出目录内容
-(NSDirectoryEnumerator *)enumeratorAtPath:path //枚举目录的内容
-(BOOL)removeItemAtPath:path error:err //删除空目录
-(BOOL)moveItemAtPath:from toPath:to error:err //重命名或移动一个目录(to不能是已存在的)
3、常用路径工具方法
+(NSString *)pathWithComponens:components //根据components中的元素构造有效路径
-(NSArray *)pathComponents //析构路径,获得组成此路径的各个部分
-(NSString *)lastPathComponent //提取路径的最后一个组成部分
-(NSString *)pathExtension //从路径的最后一个组成部分中提取其扩展名
-(NSString *)stringByAppendingPathComponent:path //将path添加到现有路径的末尾
-(NSString *)stringByAppendingPathExtension:ext //将指定的扩展名添加到路径的最后一个组成部分
-(NSString *)stringByDeletingLastPathComponent //删除路径的最后一个组成部分
-(NSString *)stringByDeletingPathExtension //从文件的最后一部分删除扩展名
-(NSString *)stringByExpandingTileInPath //将路径中代字符扩展成用户主目录(~)或指定用户的主目录(~user)
-(NSString *)stringByresolvingSymlinksInPath //尝试解析路径中的符号链接
-(NSString *)stringByStandardizingPath //通过尝试解析~、..(父目录符号)、.(当前目录符号)和符号链接来标准化路径
4、常用的路径工具函数
NSString* NSUserName(void) //返回当前用户的登录名
NSString* NSFullUserName(void) //返回当前用户的完整用户名
NSString* NSHomeDirectory(void) //返回当前用户主目录的路径
NSString* NSHomeDirectoryForUser(NSString* user) //返回用户user的主目录
NSString* NSTemporaryDirectory(void) //返回可用于创建临时文件的路径目录
5、常用的IOS目录
Documents(NSDocumentDirectory) //用于写入应用相关数据文件的目录,在ios中写入这里的文件能够与iTunes共享并访问,存储在这里的文件会自动备份到云端
Library/Caches(NSCachesDirectory) //用于写入应用支持文件的目录,保存应用程序再次启动需要的信息。iTunes不会对这个目录的内容进行备份
tmp(use NSTemporaryDirectory()) //这个目录用于存放临时文件,只程序终止时需要移除这些文件,当应用程序不再需要这些临时文件时,应该将其从这个目录中删除
Library/Preferences //这个目录包含应用程序的偏好设置文件,使用 NSUserDefault类进行偏好设置文件的创建、读取和修改
存储路径与文件目录操作ZT的更多相关文章
- Android中的内存储、外存储概念、文件操作与PC端的有些不同
其实安卓文件的操作和java在pc环境下的操作并无二致,之所以需要单独讲解是因为安卓系统提供了不同于pc的访问文件系统根路径的api,同时对一个应用的私有文件做了统一的管理.初学者在这部分感到很容易混 ...
- mysql数据库存储路径更改 数据文件位置
使用了VPS一段时间之后发现磁盘空间快满了.本人的VPS在购买的时候买了500gb的磁盘,提供商赠送了20GB的高性能系统磁盘.这样系统就有两个磁盘空间了.在初次安装mysql 的时候将数据库目录安装 ...
- paip.文件目录操作uAPI php python java对照
paip.文件目录操作uAPI php python java对照 chdir -- 改变目录 chroot -- 改变根目录 dir -- directory 类 closedir -- 关闭目录句 ...
- php文件夹与文件目录操作函数
在php中一些常用的文件夹/文件目录操作函数总结. php文件夹操作函数 string basename ( string path [, string suffix] ) 给出一个包含有指向一个文件 ...
- 你一定要知道的关于Linux文件目录操作的12个常用命令
写在前面: 1,<你一定要知道的关于Linux文件目录操作的12个常用命令>是楼主收集的关于Linux文件目录操作最常用的命令,包括文件或目录的新建.拷贝.移动.删除.查看等,是开发人员操 ...
- (转载)【TP5.0】设置session有效时长+修改默认存储路径
//查看默认session存储路径:print_r(session_save_path()); \thinkphp\helper.php if (!function_exists('ses ...
- 转:Android文件存储路径getFilesDir()与getExternalFilesDir的区别
作为一个开发者,我们经常需要通过缓存一些文件到SD卡中,常见的方式就是,通过: File sdCard = Environment.getExternalStorageDirectory(); 获取S ...
- [PY3]——IO——文件目录操作
IO—os.shutil—文件目录操作 目录操作 1. 新建 os.mkdir(path[, mode]) 相当于mkdir,新建目录 os.makedirs(path[, mode]) 相当于mkd ...
- python OS 模块 文件目录操作
Python OS 模块 文件目录操作 os模块中包含了一系列文件操作的函数,这里介绍的是一些在Linux平台上应用的文件操作函数.由于Linux是C写的,低层的libc库和系统调用的接口都是C AP ...
随机推荐
- GStreamer基础教程08 - 多线程
摘要 GStreamer框架会自动处理多线程的逻辑,但在某些情况下,我们仍然需要根据实际的情况自己将部分Pipeline在单独的线程中执行,本文将介绍如何处理这种情况. GStreamer多线程 GS ...
- Java 提取Word中的文本和图片
本文将介绍通过Java来提取或读取Word文档中文本和图片的方法.这里提取文本和图片包括同时提取文档正文当中以及页眉.页脚中的的文本和图片. 使用工具:Free Spire.Doc for Java ...
- opencv霍夫变换
霍夫变换不仅可以找出图片中的直线,也可以找出圆,椭圆,三角形等等,只要你能定义出直线方程,圆形的方程等等. 不得不说,现在网上的各种博客质量真的不行,网上一堆文章,乱TM瞎写,误人子弟.本身自己就没有 ...
- mybatis-dynamic-query 3.0 更新
项目地址: mybatis-dynamic-query 前言 在 2.0 完成对 tk.mapper 集成,为何 mybatis-dynamic-query 选择 tk.mapper 集成, 再 3. ...
- 通过父级id获取到其下所有子级(无穷级)——Mysql函数实现
[需求]某用户只能查看其自己信息及其下级信息,涉及通过该用户所在部门获取其下所有部门(多层)id集合. 步骤一:对数据库进行设置: set global log_bin_trust_function_ ...
- freemarker属性配置
freemarker属性配置: spring.freemarker.allow-request-override=false # Set whether HttpServletRequest attr ...
- 快学Scala 第十九课 (trait的abstract override使用)
trait的abstract override使用: 当我看到abstract override介绍的时候也是一脸懵逼,因为快学scala,只介绍了因为TimestampLogger中调用的super ...
- C#使用GUID作为随机数种子
使用C#默认的Random无参构造的next生成的随机数,在快速生成随机数的时候,会出现大批量的重复.使用guid作为随机数种子,效果会好很多 Guid temp = Guid.NewGuid(); ...
- Spring Boot2 系列教程(十二)@ControllerAdvice 的三种使用场景
严格来说,本文并不算是 Spring Boot 中的知识点,但是很多学过 SpringMVC 的小伙伴,对于 @ControllerAdvice 却并不熟悉,Spring Boot 和 SpringM ...
- 将自定义功能添加到Spring Data Repository
Spring Data非常方便,可以加快开发速度,避免使用样板代码. 但是,在某些情况下,注释查询不足,而无法达到您可能希望实现的自定义功能. 因此,Spring Data允许我们向Spring Da ...