一、模拟器沙盒的位置

/User/userName/Library/Application Support/iPhone Simulator

     当我们创建应用程序时,在每个沙盒中含有三个文件,分别是Document、Library和temp。

     1、Document:一般需要持久的数据都放在此目录中,可以在当中添加子文件夹,iTunes备份和恢复的时候,会包括此目录。

     2、Library:设置程序的默认设置和其他状态信息

     3、temp:创建临时文件的目录,当iOS设备重启时,文件会被自动清除

二、获取沙盒目录

     1、获取程序的根目录(home)目录

NSString *homePath = NSHomeDirectory()

     2、获取Document目录

NSArray  *paths = NSSearchPathDorDirectoriesInDomains(NSDocumentDicrectory,, NSUserDomainMark,   YES);

NSString *docPath = [paths lastObject];

     3、获取Library目录

NSArray *paths = NSSearchPathForDirectoriseInDomains(NSLibraryDirectory, NSUserDomainMask, YES);

NSString *docPath = [paths lastObject];

     4、获取Library中的Cache

NSArray *paths = NSSearchPathForDirectoriseInDomains(NSCachesDirectory, NSUserDomainMask, YES);

NSString *docPath = [paths lastObject];

     5、获取temp路径

NSString *temp = NSTemporaryDirectory( );

三、NSString类路径的处理方法

     文件路径的处理

NSString *path = @"/Uesrs/apple/testfile.txt"

     常用方法如下 

     1、获得组成此路径的各个组成部分,结果:("/","User","apple","testfile.txt")

- (NSArray *)pathComponents;

     2、提取路径的最后一个组成部分,结果:testfile.txt

- (NSString *)lastPathComponent;

     3、删除路径的最后一个组成部分,结果:/Users/apple

- (NSString *)stringByDeletingLastPathCpmponent;

     4、将path添加到先邮路径的末尾,结果:/Users/apple/testfile.txt/app.txt

- (NSString *)stringByAppendingPathConmponent:(NSString *)str;

     5、去路径最后部分的扩展名,结果:text

- (NSString *)pathExtension;

     6、删除路径最后部分的扩展名,结果:/Users/apple/testfile

- (NSString *)stringByDeletingPathExtension;

     7、路径最后部分追加扩展名,结果:/User/apple/testfile.txt.jpg

- (NSString *)stringByAppendingPathExtension:(NSString *)str;

四、NSData

  • NSData是用来包装数据的

  • NSData存储的是二进制数据,屏蔽了数据之间的差异,文本、音频、图像等数据都可用NSData来存储

NSData的用法

1.NSString与NSData互相转换

NSData-> NSString :

NSString *aString = [[NSString alloc] initWithData:adataencoding:NSUTF8StringEncoding];

NSString->NSData   :

NSString *aString = @"1234abcd";
NSData *aData = [aString dataUsingEncoding: NSUTF8StringEncoding];

将data类型的数据,转成UTF8的数据

+(NSString *)dataToUTF8String:(NSData *)data
{
NSString *buf = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
return [buf autorelease];
}

将string转换为指定编码 
+(NSString *)changeDataToEncodinString:(NSData *)data encodin:(NSStringEncoding )encodin{
    NSString *buf = [[[NSString alloc] initWithData:data encoding:encodin] autorelease];
    return buf;
}

2. NSData 与 UIImage
NSData->UIImage:
UIImage *aimage = [UIImage imageWithData: imageData];
 
//例:从本地文件沙盒中取图片并转换为NSData
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *name = [NSString stringWithFormat:@"ceshi.png"];
NSString *finalPath = [path stringByAppendingPathComponent:name];
NSData *imageData = [NSData dataWithContentsOfFile: finalPath];
UIImage *aimage = [UIImage imageWithData: imageData];

3.NSData与NSArray  NSDictionary

+(NSString *)getLocalFilePath:(NSString *) fileName
{
return [NSString stringWithFormat:@"%@/%@%@", NSHomeDirectory(),@“Documents”,fileName];
}

包括将NSData写进Documents目录
从Documents目录读取数据
在进行网络数据通信的时候,经常会遇到NSData类型的数据。在该数据是dictionary结构的情况下,系统没有提供现成的转换成NSDictionary的方法,为此可以通过Category对NSDictionary进行扩展,以支持从NSData到NSDictionary的转换。声明和实现如下:

 
+ (NSDictionary *)dictionaryWithContentsOfData:(NSData *)data {     
    CFPropertyListRef list = CFPropertyListCreateFromXMLData(kCFAllocatorDefault, (CFDataRef)data, kCFPropertyListImmutable, NULL);
    if(list == nil) return nil; 
    if ([(id)list isKindOfClass:[NSDictionary class]]) { 
         return [(NSDictionary *)list autorelease]; 
        } 
    else { 
         CFRelease(list); 
         return nil; 
        } 
}

四、文件管理常用方法

NSFileManager

创建一个文件并写入数据

- (BOOL)createFileAtPath:(NSString *)path contents:(NSData *)data attributes:(NSDictionary *)attr;

从一个文件中读取数据

- (NSData *)contentsAtPath:(NSString *)path;

scrPath路径上的文件移动到dstPath路径上,注意这里的路径是文件路径而不是目录 

- (BOOL)moveItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **) error;

scrPath路径上的文件复制到dstPath路径上

- (BOOL)copyItemAtPath:(NSString *)scrPath toPath:(NSString *)dstPath error:(NSError **) error;

比较两个文件的内容是否一样 

- (BOOL)contentsEqualAtPath:(NSString *)path1 andPath:(NSString *)path2;

文件是否存在

- (BOOL)fileExistsAtPath:(NSString *)path;

移除文件

- (BOOL)removeItemAtPath:(NSString *)path error:(NSError **) error;

创建文件管理

NSFileManager *fileManager = [NSFileManager defaultManager];

NSString *path = [NSHomeDirectory( )  stringByAppendingPathComponent:@"holyBible.txt"];                                                                                                     NSString *text = @"abcdefg";

将字符串转成NSData类型 

NSData *data = [text dataUsingEncoding: NSUTF8StringEncoding];

写入文件

BOOL success = [fileManager createFileAtPath:path contents:data attributes:nil];

创建文件夹 

NSString *filePath = [path stringByAppendingPathComponent:@"holyBible.txt"];

NSString *contect = @"abcdefg";

BOOL success = [fm createFileAtPath:filePath contents:[content dataUsingEncoding: NSUTF8StringEncoding] attributes:nil];

NSFileManager-读取内容

NSData *fileData = [fileManager contentsAtPath:filePath];

NSString *content = [[NSString alloc] initWithData:fileData dataUsingEncoding: NSUTF8StringEncoding];

NSData-读取内容                                                                                          

NSString *filePath = [path stringByAppendingPathComponent:@"holyBible.txt"];

NSData *data = [NSData dataWithContentOfFile:filePath];

NSString-读取内容

NSString *filePath = [path stringByAppendingPathComponent:@"holyBible.txt"];

NSString *content = [[NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];

移动、复制文件                                                                                             

移动文件(重命名)                                                                                         

NSString *toPath = [NSHomeDirectory( ) stringByAppendingPathComponent:@"hellogod/New Testament.txt"];                                                                              [fm createDirectoryAtPath:[toPath stringByDeletingLastPathComponent] withIntermediateDirectories:YES attributes:nil error:nil];

NSError *error;

BOOL isSuccess = [fm moveItemAtPath:filePath toPath:toPath error:&error];

复制文件(重命名)                      

NSString *copyPath = [NSHomeDirectory( ) stringByAppendingPathComponent:@"备份/Old Testament.txt"];                                                                                  [fm createDirectoryAtPath:[toPath stringByDeletingLastPathComponent] withIntermediateDirectories:YES attributes:nil error:nil];

BOOL success = [fm copyItemAtPath:toPath toPath:toPath error:nil];

删除文件、获取文件大小

判断文件是否存在和删除文件               

if([fm fileExistsAtPath])

{

if ([fm removeItemAtPath:copyPath])

{

NSLog(@"remove success");

}

}

获取文件大小                                                                                                 

 NSFileManager *fileManager = [NSFileManager defaultManager];

获得文件的属性字典

NSDictionary *attrDic = [fileManager attributesOfItemAtpath:sourcePath error:nil];

NSNumber *fileSize = [attrDic objectForKey:NSFileSize];

获取目录文件信息                                                                                           

 NSFileManager *fileManager = [NSFileManager defaultManager];

NSString *enuPath = [NSHomeDirectoty( ) stringByAppendingPathComponent:@"Test"];                                                                                                           NSDictionaryEnumerator *dirEnum = [fileManager enumeratorAtPath:enuPath];

NSString *path = nil;

while ((path = [dirEnum nextObject]} != nil)

{

NSLog(@"%@",path);

}

转载于:https://www.cnblogs.com/angongIT/p/3793832.html

文件管理详细知识要点相关推荐

  1. 入门Java你需要了解的几个知识要点!

    很多Java编程初学者在刚接触Java语言程序的时候,不知道该学习掌握哪些必要的基础知识.本文小千总结了入门Java你需要知道的几个基础知识要点,希望能够对刚入门的Java新手有帮助. 一.先了解什么 ...

  2. javascript必须知道的知识要点(一)

    该文章不详细叙述各知识要点的具体内容,仅把要点列出来,供大家学习的时候参照,或者检测自己是否熟练掌握了javascript,清楚各个部分的内容. 语句 注释 输出 字面量 变量 数据类型 typeof ...

  3. Django MTV - 模型层 - (专题)知识要点与实战案例

    Django- 模型层(models)知识要点与实战案例 (专题概述及索引) 概述:本专题以讨论Django中模型层相关的基础知识,这些基础知识在我们的日常开发中有着相当重要的作用.模型(models ...

  4. 【计算机体系结构】计算机系统结构的基本概念——基本知识要点汇总

    halo~我是bay_Tong桐小白 本文内容是桐小白个人对所学知识进行的总结和分享,知识点会不定期进行编辑更新和完善,了解最近更新内容可参看更新日志,欢迎各位大神留言.指点 计算机系统结构的基本概念 ...

  5. 【计算机网络】计算机网络体系结构总结——基本知识要点汇总

    halo~我是bay_Tong桐小白 本文内容是桐小白个人对所学知识进行的总结和分享,知识点会不定期进行编辑更新和完善,了解最近更新内容可参看更新日志,欢迎各位大神留言.指点 计算机网络体系结构总结- ...

  6. 软件测试面试必备网络知识要点

    本文通过一些知识要点整理,可能整理不专业 1.网络分类 目前最主要的三种网络 1.电信网络(俗称的电话网络) 2.有限电视网络 3.计算机网络(目前发展最快.信息时代核心技术) 作为软件测试在工作中主 ...

  7. 2020-06-19 云运维linux centos7.2 文件管理基础知识总结

    2020-06-19 云运维linux文件管理基础知识总结 linux=Linux: 命令(基础使用)+文件系统(目录)+服务(配置) 1.路径的分类 绝对路径:由根目录(/)开始写起的文件名或目录名 ...

  8. 2011年计算机三级考试PC技术知识要点(32)

    2011年计算机三级考试PC技术知识要点(32) 2011年02月19日 [b]二.输出设备[/b] 1.显示器 显示器是PC机必不可少的一种输出设备,其作用是将数字信息号转化为光信 号,最终将文字与 ...

  9. 23种设计模式知识要点

    23种设计模式知识要点 这是一篇摘抄文章!!!问我我也不一定会!!! 1.单例模式(Singleton Pattern) 定义:Ensure a class has only one instance ...

最新文章

  1. 怎么git 自己建的服务器_Git服务器搭建,以及Git基本操作
  2. 071_html语言代码
  3. 微信公众平台向特定用户推送消息
  4. 来自一名程序员的表白
  5. SimpleDateFormat 按照不同要求去改写时间的格式,或者把时间串变成date类型
  6. Objective-C method及相关方法分析
  7. catia利用宏批量改名的方法_谁有CATIA批量改名的宏程序啊
  8. Java连接字符(concat)
  9. 商城文档、商城原型、全局说明、o2o商城、汽车商城、业务逻辑、商城架构图、流程图、版本规划、需求说明、活动、预约、会员、prd、交互说明、页面说明、显示规则、字段说明、操作规则、数据来源、需求规划
  10. IT运维管理必备工具大全,看完还敢称自己是高手吗?
  11. ICLR2019 | 模型训练会发生了大量的、反复的样本遗忘现象,如何解决?
  12. linux nginx rtmp 直播,nginx+rtmp简单直播
  13. flickr网站用到的php技术
  14. 帝国 html5免费模板,帝国CMS模板
  15. Millet谷仓区块链和电子商务及Token相结合的产物
  16. (附源码)springboot 校园学生兼职系统 毕业设计 742122
  17. SpringBoot+Mysql财务在线报销管理系统
  18. python100个常用术语_Python 常用术语
  19. 单休和双休有多大区别(月薪1万和8千如何选择)
  20. 非静压模型NHWAVE学习(7)——波浪变形模拟算例学习(Wave transformation over an elliptical shoal)

热门文章

  1. 网络推广期间遇到页面无效收录情况网络推广专员如何应对?
  2. 企业网络推广网站排名首页但确保用户体验也是企业网络推广的关键
  3. 企业网络推广期间影响企业网络推广自然排名的因素有哪些?
  4. java分解因式_用JAVA因式分解 并以9=3×3格式输出
  5. java jackson json_java – 使用Jackson从JSON获取单个字段
  6. 无暇素数c语言百度,华为招聘--前人经验(转贴)
  7. gmapping matlab实现_gmapping学习
  8. (转载)linux如何设置为低内核启动(降核)
  9. Android <java.lang.ClassNotFoundException:Didn‘t find class ‘XXX‘ on path:DexPathList> 解决
  10. 反射机制源码及原理学习