文件操作(NSFileManager)
iOS 沙盒机制,只能访问自己应用目录下的文件。每个沙盒包括三个文件夹:Documents,Library和tmp。Library包含Caches,Praferences目录。
1.获取沙盒根目录
//沙盒根目录 NSLog(@"%@",NSHomeDirectory());
2.获取Documents目录路径
1 //documents目录 ,两种方式 2 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 3 NSLog(@"%@",[paths objectAtIndex:0]); 4 NSLog(@"%@",[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]);
3.获取Library目录路径
1 //library目录 2 NSArray *pathss = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); 3 NSLog(@"%@",[pathss objectAtIndex:0]); 4 NSLog(@"%@",[NSHomeDirectory() stringByAppendingPathComponent:@"Library"]);
4.获取Cache目录路径
1 //Cache目录 2 NSArray *pathss1 = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); 3 NSLog(@"%@",[pathss1 objectAtIndex:0]);
5.获取tmp目录路径
//tmp目录 NSLog(@"%@",NSTemporaryDirectory());
Documents:苹果建议将程序创建产生的文件以及应用浏览产生的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录
Library:存储程序的默认设置或其它状态信息;
Library/Caches:存放缓存文件,保存应用的持久化数据,用于应用升级或者应用关闭后的数据保存,不会被itunes同步,所以为了减少同步的时间,可以考虑将一些比较大的文件而又不需要备份的文件放到这个目录下。
tmp:提供一个即时创建临时文件的地方,但不需要持久化,在应用关闭后,该目录下的数据将删除,也可能系统在程序不运行的时候清除。
6.创建文件夹和文件,以及对文件的写入,读取,属性,删除
1 //创建文件夹 2 NSFileManager *fileManger = [NSFileManager defaultManager]; 3 NSString *test = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"test"]; 4 //创建目录 5 BOOL res = [fileManger createDirectoryAtPath:test withIntermediateDirectories:YES attributes:nil error:nil]; 6 if (res) { 7 NSLog(@"创建目录成功"); 8 } 9 //创建文件 10 NSString * file = [test stringByAppendingPathComponent:@"file.txt"]; 11 BOOL ress = [fileManger createFileAtPath:file contents:nil attributes:nil]; 12 if (ress) { 13 NSLog(@"创建文件成功"); 14 } 15 //写数据到文件,注意:文件要存在。 16 NSString *documentsPath = [paths objectAtIndex:0]; 17 NSString *testDirectory = [documentsPath stringByAppendingPathComponent:@"test"]; 18 NSString *testpath = [testDirectory stringByAppendingPathComponent:@"file.txt"]; 19 NSString *content = @"这是测试内容!"; 20 BOOL resss = [content writeToFile:testpath atomically:YES encoding:NSUTF8StringEncoding error:nil]; 21 if (resss) { 22 NSLog(@"文件写入成功"); 23 }else 24 { 25 NSLog(@"shibai"); 26 } 27 28 //读文件中的数据 29 NSString * data = [NSString stringWithContentsOfFile:testpath encoding:NSUTF8StringEncoding error:nil]; 30 NSLog(@"%@",data); 31 32 //文件属性 33 34 //删除文件 35 36 BOOL ressss = [fileManger removeItemAtPath:testpath error:nil]; 37 if (ressss) { 38 NSLog(@"删除成功"); 39 } 40 //判断文件是否存在, 41 NSLog(@"%@",[fileManger fileExistsAtPath: testpath]?@"YES":@"NO"); 42 }
我的心愿是什么呢