app沙盒与文件操作(16.5.14)

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


一个app发布到iPhone上后,它的目录结构如下:

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(@"复制文件失败!");

    }


获取Xcode工程中的文件:

    //获取资源路径

    NSString *resourcePath = [[NSBundle mainBundle] resourcePath];

    NSLog(@"资源路径:%@", resourcePath);

    

    //直接获取资源路径下的文件

    NSString *str = [[NSBundle mainBundle] pathForResource:@"akgo" ofType:@"png"];

    NSLog(@"资源文件路径:%@", str);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值