iOS的沙盒机制,应用只能访问自己应用目录下的文件。iOS不像android,没有SD卡概念,不能直接访问图像、视频等内容。iOS应用产生的内容,如图像、文件、缓存内容等都必须存储在自己的沙盒内。默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp。Library包含Caches、Preferences目录。
上面的完整路径为:用户->资源库->Application Support->iPhone Simulator->6.1->Aplications
Documents:苹果建议将程序创建产生的文件以及应用浏览产生的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录
Library:存储程序的默认设置或其它状态信息;
Library/Caches:存放缓存文件,保存应用的持久化数据,用于应用升级或者应用关闭后的数据保存,不会被itunes同步,所以为了减少同步的时间,可以考虑将一些比较大的文件而又不需要备份的文件放到这个目录下。
tmp:提供一个即时创建临时文件的地方,但不需要持久化,在应用关闭后,该目录下的数据将删除,也可能系统在程序不运行的时候清除。
APP Sandbox
iOS怎么获取沙盒路径,怎么操作文件呢?下面给出答案。
获取应用沙盒根路径:
-(void)dirHome{
NSString *dirHome=NSHomeDirectory();
NSLog(@"app_home: %@",dirHome);
}
获取Documents目录路径:
//获取Documents目录
-(NSString *)dirDoc{
//[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSLog(@"app_home_doc: %@",documentsDirectory);
return documentsDirectory;
}
获取Library目录路径:
//获取Library目录
-(void)dirLib{
//[NSHomeDirectory() stringByAppendingPathComponent:@"Library"];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *libraryDirectory = [paths objectAtIndex:0];
NSLog(@"app_home_lib: %@",libraryDirectory);
}
获取Cache目录路径:
//获取Cache目录
-(void)dirCache{
NSArray *cacPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachePath = [cacPath objectAtIndex:0];
NSLog(@"app_home_lib_cache: %@",cachePath);
}
获取Tmp目录路径:
//获取Tmp目录
-(void)dirTmp{
//[NSHomeDirectory() stringByAppendingPathComponent:@"tmp"];
NSString *tmpDirectory = NSTemporaryDirectory();
NSLog(@"app_home_tmp: %@",tmpDirectory);
}
创建文件夹:
//创建文件夹
-(void *)createDir{
NSString *documentsPath =[self dirDoc];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *testDirectory = [documentsPath stringByAppendingPathComponent:@"test"];
// 创建目录
BOOL res=[fileManager createDirectoryAtPath:testDirectory withIntermediateDirectories:YES attributes:nil error:nil];
if (res) {
NSLog(@"文件夹创建成功");
}else
NSLog(@"文件夹创建失败");
}
创建文件
//创建文件
-(void *)createFile{
NSString *documentsPath =[self dirDoc];
NSString *testDirectory = [documentsPath stringByAppendingPathComponent:@"test"];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *testPath = [testDirectory stringByAppendingPathComponent:@"test.txt"];
BOOL res=[fileManager createFileAtPath:testPath contents:nil attributes:nil];
if (res) {
NSLog(@"文件创建成功: %@" ,testPath);
}else
NSLog(@"文件创建失败");
}
写数据到文件:
//写文件
-(void)writeFile{
NSString *documentsPath =[self dirDoc];
NSString *testDirectory = [documentsPath stringByAppendingPathComponent:@"test"];
NSString *testPath = [testDirectory stringByAppendingPathComponent:@"test.txt"];
NSString *content=@"测试写入内容!";
BOOL res=[content writeToFile:testPath atomically:YES encoding:NSUTF8StringEncoding error:nil];
if (res) {
NSLog(@"文件写入成功");
}else
NSLog(@"文件写入失败");
}
读文件数据:
//读文件
-(void)readFile{
NSString *documentsPath =[self dirDoc];
NSString *testDirectory = [documentsPath stringByAppendingPathComponent:@"test"];
NSString *testPath = [testDirectory stringByAppendingPathComponent:@"test.txt"];
// NSData *data = [NSData dataWithContentsOfFile:testPath];
// NSLog(@"文件读取成功: %@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
NSString *content=[NSString stringWithContentsOfFile:testPath encoding:NSUTF8StringEncoding error:nil];
NSLog(@"文件读取成功: %@",content);
}
文件属性:
//文件属性
-(void)fileAttriutes{
NSString *documentsPath =[self dirDoc];
NSString *testDirectory = [documentsPath stringByAppendingPathComponent:@"test"];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *testPath = [testDirectory stringByAppendingPathComponent:@"test.txt"];
NSDictionary *fileAttributes = [fileManager attributesOfItemAtPath:testPath error:nil];
NSArray *keys;
id key, value;
keys = [fileAttributes allKeys];
int count = [keys count];
for (int i = 0; i < count; i++)
{
key = [keys objectAtIndex: i];
value = [fileAttributes objectForKey: key];
NSLog (@"Key: %@ for value: %@", key, value);
}
}
删除文件:
//删除文件
-(void)deleteFile{
NSString *documentsPath =[self dirDoc];
NSString *testDirectory = [documentsPath stringByAppendingPathComponent:@"test"];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *testPath = [testDirectory stringByAppendingPathComponent:@"test.txt"];
BOOL res=[fileManager removeItemAtPath:testPath error:nil];
if (res) {
NSLog(@"文件删除成功");
}else
NSLog(@"文件删除失败");
NSLog(@"文件是否存在: %@",[fileManager isExecutableFileAtPath:testPath]?@"YES":@"NO");
}
* iOS入门群:83702688
* android开发进阶群:241395671
*/
https://developer.apple.com/library/ios/#documentation/FileManagement/Conceptual/FileSystemProgrammingGUide/FileSystemOverview/FileSystemOverview.html#//apple_ref/doc/uid/TP40010672-CH2-SW2
分享到:
相关推荐
主要介绍了详解iOS学习笔记(十七)——文件操作(NSFileManager),具有一定的参考价值,有需要的可以了解一下。
IOS应用源码——NSFileManager_DirectoryLocations.rar
iOS开发_iphone开发_文件系统NSFileManager_如何创建、重命名和删除文件
demo 地址 github.com/pro648/BasicDemos-iOS/tree/master/FileManager 详细介绍:github.com/pro648/tips/wiki/使用NSFileManager管理文件系统 - Bundle Container目录包含应用程序包。 - Data Container目录...
iOS文件管理笔记,沙盒,NSFileManager,NSFileHandle
FCFileManager, 在NSFileManager上简化文件管理,iOS文件管理器 FCFileManager 在NSFileManager上为文件管理器提供英镑的。 为执行最常见的操作提供了许多 static 方法,只需几行代码。 默认情况下,它在文档目录中...
1.利用NSFileManager的最进本的用法操作另外一个项目,同时修改所有.m文件的内容 2.同时修改多个文件夹的名称 github 地址 https://github.com/elite-kai/ELFileManager
SwiftFilePath, 简单而强大的NSFileManager封装 SwiftFilePath 简单而强大的NSFileManager封装。用法创建实例你可以从字符串创建 Path 对象。let fooDir = Path("/path/to/fooDir")//
针对NSFileManager的文件管理类工具,提供了文件操作的便携式封装。支持pod方式集成使用:pod 'ZYFileTool',或者直接将Classes里面的文件拖入项目使用。
该源码实现一款可以支持NSFileManager查看本地文件功能,几乎可以查看所有的文件,是一个不错的ios学习的例子,喜欢的朋友可以下载学习看看,。
新旧objective-cNSFileManager的差异。
FCFileManager iOS File Manager位于NSFileManager之上,用于简化文件管理。 它提供了许多静态方法,只需几行代码即可执行最常见的操作。 默认情况下,它可以在Documents目录中工作,以允许使用相对路径,但是可以在...
简单实用的iOS文件工具类 ...HYFileManager一个基于NSFileManager的文件操作类,它提供一系列的静态方法,只用少量的代码,来处理经常需要处理的文件操作,使得工作更加方便快捷。 具体使用示例请查看项目介绍: ...
iPhone 文件读写操作 1,写文件操作 - (IBAction)btnWrite:(id)sender { //创建文件管理器 NSFileManager *fileManager = [NSFileManager defaultManager]; //获取路径 //参数 要获取的哪种路径 NSArray *...
这段objective c代码用于移动指定路径下的文件 代码如下: if ([fileManager ...遍历所有的文件,并将它们移动使用 NSFileManager 代码如下: – (void) moveAllDocs { NSFileManager *fileManager = [NSFileM
用NSCoding持久化数据,以及如何用NSFileManager来有效地保存文件。
详解IOS中文件路径判断是文件还是文件夹 方法1 + (BOOL)isDirectory:(NSString *)filePath { BOOL isDirectory = NO; [[NSFileManager defaultManager] fileExistsAtPath:filePath isDirectory:&isDirectory]; ...
目的 iOS和Mac App Store对应在何处... StandardPaths提供了一组简单的NSFileManager扩展方法,可以在各个平台之间以清晰一致的方式访问文件,并抽象出了在iOS 5及更高版本上应用移动备份属性禁用iCloud备份的复杂性。
代码如下: – (NSString *)dataPath:(NSString *)file { NSString *path = [... BOOL bo = [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:ni