NSFileManager(文件管理)

iOS应用程序只能在为该改程序创建的文件中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等。       默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp,因为应用的沙盒机制,应用只能在几个目录下读写文件

1.Documents:

//保存应?运行时生成的需要持久化的数据,并将通过iCloud自动备份。例如,游戏应用可将游戏存档保存在该目录,iTunes备份和恢复的时候会包括此目录

2.Library:

//Library/Caches:保存应用运行时?成的需要持久化的数据,iTunes同步设备时不会备份该目录。一般存储体积大、不需要备份的非重要数据。比如杂志、新闻、地图应用使用的数据库缓存文件和可下载内容应该保存到这个文件夹。

//Library/Preference:保存应用的所有偏好设置,iOS的Settings(设置) 应?会在该?录中查找应?的设置信息。iTunes同步设备时会备份该目录

3.tmp:

//保存应?运行时所需的临时数据,使?完毕后再将相应的文件从该目录删除。应用没有运行时,系统也可能会清除该目录下的文件。iTunes同步设备时 不会备份该目录

 1 /*
 2  路径:
 3 /Users/scjy/Library/Developer/CoreSimulator/Devices/E43301D4-B5C5-4940-8A8E-305EE9605C1C/data/Containers/Data/Application/04A8FA3D-D4CD-4C30-BA87-3A3429F9135B/Documents
 4  总结:新建重名时,文件夹(Directory)不被覆盖,而文件(File)会被覆盖
 5  */
 6
 7 #import "ViewController.h"
 8
 9 @interface ViewController ()
10 {
11     NSString *path;
12 }
13 @property(nonatomic,assign)NSFileManager *fileMgr;
14 @end
15
16 @implementation ViewController
17
18 - (void)viewDidLoad {
19     [super viewDidLoad];
20 //    NSString *homeDirectory = NSHomeDirectory();//获取根目录,APP在手机中的目录
21     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
22     path = [paths firstObject];//NSString *p = [paths objectAtIndex:0];//获取沙盒中的document目录
23     NSLog(@"%@",path);
24 //    // 获取Cache目录
25 //    NSArray *cachePaths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
26 //    NSString *cachePath = [cachePaths firstObject];
27 //    //获取Library目录
28 //    NSArray *libraryPaths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
29 //    NSString *libraryPath = [libraryPaths firstObject];
30 //    //获取temp目录
31 //    NSString *tmpDir = NSTemporaryDirectory();
32 //将字符串写入刘冠.txt,如果没有此文件,系统会先创建,再写入,如果已经存在,则覆盖原有的文件
33 //    NSString *string = @"刘冠";
34 //    NSString *textPath = [path stringByAppendingPathComponent:@"刘冠.txt"];
35 //    [string writeToFile:textPath atomically:YES encoding:NSUTF8StringEncoding error:nil];
36     //将图片写入沙盒,首先需要将图片转换成data
37     UIImage *image = [UIImage imageNamed:@"128"];
38     NSData *data = UIImageJPEGRepresentation(image, 1);//CG浮动压缩质量:1
39     [data writeToFile:[path stringByAppendingString:@"/1.jpg"] atomically:YES];//如果使用stringByAppendingString拼接路径,则需要在文件前加/
40     //文件操作
41     self.fileMgr = [NSFileManager defaultManager];//创建文件管理器
42 //    [self.fileMgr removeItemAtPath:[path stringByAppendingString:@"/1.jpg"] error:nil];
43     //获取某路径下所有的文件和文件夹(目录)
44     NSArray *docs = [self.fileMgr contentsOfDirectoryAtPath:path error:nil];
45     NSLog(@"目录%@",docs);
46    [self.fileMgr createDirectoryAtPath:[path stringByAppendingString:@"/刘冠"]/*需要创建文件夹的文件夹和路径*/ attributes:nil];//创建文件夹,如果该文件夹已存在,则不会创建新的文件夹(已弃用)
47     [self.fileMgr createDirectoryAtPath:[path stringByAppendingPathComponent:@"哈哈"] withIntermediateDirectories:NO attributes:nil error:nil];//创建文件夹,如果该文件夹已存在,则不会创建新的文件夹“Intermediate:中间物”
48 //    BOOL flag = [self.fileMgr fileExistsAtPath:path];//检查文件/文件夹是否存在“Exists:存在”用于移除等操作的判断
49 //    BOOL isD;
50 //    BOOL flag3 = [self.fileMgr fileExistsAtPath:path isDirectory:&isD];//判断文件/文件夹是否存在,且该路径是否是文件夹
51 }
52 - (IBAction)remove:(id)sender {
53     //移除操作(删除)
54         [self.fileMgr removeItemAtPath:[path stringByAppendingString:@"/1.jpg"] error:nil];
55      [self.fileMgr removeItemAtPath:[path stringByAppendingString:@"/刘冠"] error:nil];
56      [self.fileMgr removeItemAtPath:[path stringByAppendingString:@"/哈哈"] error:nil];
57 // stringByAppendingString:@"/1.jpg" = stringByAppendingPathComponent:@"1.jpg"
58 }
59 - (IBAction)Copy:(id)sender {
60     //copy操作
61     if([self.fileMgr fileExistsAtPath:[path stringByAppendingString:@"/刘冠"]])//判断"刘冠"文件是否存在
62     {
63         [self.fileMgr copyItemAtPath:[path stringByAppendingString:@"/刘冠/1.jpg"] toPath:[path stringByAppendingString:@"/哈哈/4.jpg"] error:nil];//,注意:1、(源文件)必须存在,(目标文件) 必须不存在,文件名字必须要写出来,如果(目标文件) 已经存在,则复制失败 (因为不会替换已有的文件或文件夹)2、(源文件)以及(目标文件),这两个参数必须是完整的文件路径(不考虑后缀名),不能只写到文件夹
64
65
66 //[self.fileMgr moveItemAtPath:[path stringByAppendingString:@"/刘冠/1.jpg"]  toPath:[path stringByAppendingString:@"/哈哈/2.jpg"] error:nil];/*/移动,注意事项与copy一致
67     }
68 }
时间: 2024-11-03 22:04:49

NSFileManager(文件管理)的相关文章

Objective-C NSFileManager 文件管理总结

createFileAtPath //创建文件 NSFileManager *fm = [NSFileManager defaultManager]; NSString *strpath = [NSString stringWithFormat:@"%@/file1.txt",NSHomeDirectory()]; NSString *strdata = @"test"; bool bRet = [fm createFileAtPath:strpath conten

iOS开发-一些单例的类

UIApplication(应用程序实例) NSNotificationCenter(消息中心)  NSFileManager(文件管理)    NSUserDefaults(应用程序设置)     NSURLCache(请求缓存)   NSHTTPCookieStorage(应用程序cookies池)

iOS 常用的单例类

1.UIApplication(应用程序实例) 获取方式:[UIApplication sharedApplication] 详细:http://www.cnblogs.com/hissia/p/5678518.html 2.NSNotificationCenter(消息中心) 获取方式:[NSNotificationCenter defaultCenter] 常用的通知模式 3.NSFileManager(文件管理) 获取方式:[NSFileManager defaultManager] 4.

OC 知识点回顾

/* 字符串: NSString  不可变字符串  字符串对象的内容不能修改,字符串的指针可以改变 NSMutableString 可变字符串   可以修改字符串对象的内容,继承自NSString ,具有所有的方法 */ 1.创建对象,实例方法和类方法 NSMutableString *mStr=[[NSMutableString alloc]initWithString:@"Hello World"]; 2.将不可变字符串转换为可变字符串 NSMutableString *mStr2

UI基础:DataPersistent.沙盒

沙盒是系统为每一个应用程序生成的一个特定文件夹,文件夹的名字由一个十六进制数据组成,每一个应用程序的沙盒文件名都是不一样的,是由系统随机生成的. 沙盒主目录: NSString *homePath = NSHomeDirectory(); 沙盒内放有三个主要目录文件夹:1.Documents 2.Library 3tmp 1.Documents 存放是一些比较重要的文件,但是放入Documents中的文件不能过大. 2.Library 是一个资源库,存储一些不太重要的数据,相对比较大一些,里面有

IOS数据持久化之归档NSKeyedArchiver, NSUserDefaults,writeToFile

//2.文件读写 //支持:NSString, NSArray , NSDictionay, NSData //注:集合(NSArray, NSDictionay)中得元素也必须是这四种类型, 才能够进行文件读写 //string文件读写 NSString *string = @"假如给我有索纳塔"; //Document NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUs

iOS开发 -文件下载(2合理)

iOS开发网络篇—文件下载(二·合理) 一.边下载,边写入 1.思路 把下载的data追加到文件的尾部,直到所有的数据下载完为止. 1.在连通了服务器的时候,创建一个空的文件到沙盒中NSFileManager(文件管理类) 2.创建写数据的文件句柄 3.在接收到服务器返回的数据后,把data写入到创建的空文件中,但是不能使用writeTofile(会覆盖) 3.1移动到文件的尾部 3.2从当前移动的位置,写入数据 4.服务器的数据加载完毕后关闭连接,不再输入数据在文件中 二.代码示例 1 //

IOS 初级数据持久化-沙盒机制

什么是数据持久化?数据的永久存储 为什么要坐数据持久化:存储在内存中的数据,程序关闭,内存释放,数据丢失,这种数据是临时的 数据初九化的本质:数据保存成文件,存储到程序的沙河中 1.沙盒机制 每个应用程序位于文件系统的严格限制部分 每个应用程序只能在为该程序创建的文件系统中读取文件 每个应用程序在IOS系统内都放在了统一的文件夹目录下 沙盒的本质就是一个文件夹,名字是随机分配的. 2.沙盒路径的位置 1.通过Finder查找程序沙盒相对的路径 通过代码查找程序沙盒相对路径 NSString *D

iOS开发中常用的单例

定义:一个类的对象,无论在何时创建.无论创建多少次,创建出来的对象都是同一个对象. 使用场景:当有一些数据需要共享给别的类的时候,就可以把这些数据保存在单例对象中. 关键代码: + (instancetype)allocWithZone:(struct_NSZone *)zone {     static id instance = nil;     if(instance == nil)     {       instance =   [super allocWithZone:zone];

iOS核心面试题

1,请简述你对协议的理解?    protocol无论是在那个领域都是一种约束,规范.在OC中的协议主要用于在各个类之间进行回调传值. 协议有 委托方,代理方, 委托方是协议的制定者,需要声明协议的方法,实现协议的对象.代理方,是协议的遵守着,需要遵守协议,并实现协议中的必要方法. 2,如何理解ARC自动引用计数机制? Cocoa采用了引用计数(referencecounting)机制,每一个对象有一个关联的“整数retainCount”用于记录对象的使用情况.对象被引用时retaincount