App沙盒
对于一个运行在iPhone上的app,它只能访问自己根目录下的一些文件(所谓沙盒sandbox).
打开系统隐藏目录
显示系统隐藏文件及文件夹
1.打开终端
2.输入defaults write com.apple.finder AppleShowAllFiles -bool true
3.输入KillAll Finder
4.把资源库文件夹拖到左侧列表中,供后续查看使用!
隐藏系统文件及文件夹
1.打开终端
2.输入defaults write com.apple.finder AppleShowAllFiles -bool false
3.输入KillAll Finder
1.app root 根目录;
2.documents 文档目录;
3.库文件目录;
4.library库文件缓存目录;
5.tmp临时目录;
//1. app root根目录
NSString *strHome = NSHomeDirectory();
NSLog(@"根目录:%@", strHome);
//2. documents文档目录
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *strDirectory = [paths objectAtIndex:0];
NSLog(@"文档目录:%@", strDirectory);
//3. library库文件目录
paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *strLibrary = [paths objectAtIndex:0];
NSLog(@"库文件目录:%@", strLibrary);
//4. cache缓存目录
paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *strCaches = [paths objectAtIndex:0];
NSLog(@"cache缓存目录:%@", strCaches);
//5. tmp临时目录
NSString *strTmp = NSTemporaryDirectory();
NSLog(@"临时目录:%@", strTmp);
//1.创建一个文件实例
NSFileManager *fileManage = [NSFileManager defaultManager];
//2.创建一个目录
//在文档目录下创建一个test目录
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *strDirectory = [paths objectAtIndex:0];
NSString *myDirectory = [strDirectory stringByAppendingPathComponent:@"test"];
//3.判断文件或文件夹是否存在
BOOL directory = YES;
BOOL success;
//方法fileExistsAtPath:isDirectory:最后一个参数为YES时表示文件夹是否存在,为NO时表示文件是否存在
if (![fileManage fileExistsAtPath:myDirectory isDirectory:&directory])
{
//创建一个目录文件夹
success = [fileManage createDirectoryAtPath:myDirectory
withIntermediateDirectories:NO
attributes:nil
error:nil];
if (!success)
{
NSLog(@"test目录创建失败!");
}
else
{
NSLog(@"目录创建成功:%@", myDirectory);
}
}
//4.显示文件目录的内容
NSString *strHome = NSHomeDirectory();
NSArray *aryContent = [fileManage contentsOfDirectoryAtPath:strHome error:nil];
for (NSString *name in aryContent)
{
NSLog(@"%@", name);
}
//5.创建一个文件
NSString *myFile = [myDirectory stringByAppendingPathComponent:@"file.txt"];
NSString *myFile2 = [myDirectory stringByAppendingPathComponent:@"file2.plist"];
NSString *myFile3 = [myDirectory stringByAppendingPathComponent:@"file3.plist"];
BOOL file = NO;
if (![fileManage fileExistsAtPath:myFile isDirectory:&file])
{
success = [fileManage createFileAtPath:myFile contents:nil attributes:nil];
if (!success)
{
NSLog(@"文件创建失败!");
}
else
{
NSLog(@"文件创建成功:%@", myFile);
}
}
[fileManage createFileAtPath:myFile2 contents:nil attributes:nil];
[fileManage createFileAtPath:myFile3 contents:nil attributes:nil];
//7.向文件中写数据
//(1)字符串内容写入文件
NSString *strContent = @"hello, world!";
[strContent writeToFile:myFile atomically:YES encoding:NSUTF8StringEncoding error:nil];
//(2)数组内容写入文件
NSArray *ary = [NSArray arrayWithObjects:@"content1", @"content2", @"content3", nil];
[ary writeToFile:myFile2 atomically:YES];
//(3)字典内容写入文件
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"thanks", @"key1", @"OKOK", @"key2", nil];
[dic writeToFile:myFile3 atomically:YES];
//8.读取某个文件
//(1)读取字符串文件
strContent = [[NSString alloc] initWithContentsOfFile:myFile encoding:NSUTF8StringEncoding error:nil];
NSLog(@"字符串:%@", strContent);
[strContent release];
//(2)读取数组文件
ary = [[NSArray alloc] initWithContentsOfFile:myFile2];
NSLog(@"数组:%@", ary);
[ary release];
//(3)读取字典文件
dic = [NSDictionary dictionaryWithContentsOfFile:myFile3];
NSLog(@"字典:%@", dic);
//9.删除一个文件
success = [fileManage removeItemAtPath:myFile2 error:nil];
if (!success)
{
NSLog(@"删除文件失败!");
}
//10.移动一个文件(源文件路径atPath必须存在,目标文件路径toPath必须不存在)
paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
strDirectory = [paths objectAtIndex:0];
NSLog(@"文档目录:%@", strDirectory);
NSString *myFile6 = [strDirectory stringByAppendingPathComponent:@"file6.txt"];
[fileManage removeItemAtPath:myFile6 error:nil];//删除目标文件
success = [fileManage moveItemAtPath:myFile toPath:myFile6 error:nil];
if (!success)
{
NSLog(@"移动文件失败!");
}
//11.复制一个文件(源文件路径atPath必须存在,目标文件路径toPath必须不存在)
NSString *myFile7 = [strDirectory stringByAppendingPathComponent:@"file7.plist"];
[fileManage removeItemAtPath:myFile7 error:nil];//删除目标文件
success = [fileManage copyItemAtPath:myFile3 toPath:myFile7 error:nil];
if (!success)
{
NSLog(@"复制文件失败!");
}
//获取资源路径
NSString *resourcePath = [[NSBundle mainBundle] resourcePath];
NSLog(@"资源路径:%@", resourcePath);
//直接获取资源路径下的文件
NSString *str = [[NSBundle mainBundle] pathForResource:@"akgo" ofType:@"png"];
NSLog(@"资源文件路径:%@", str);