沙盒

ios程序为沙盒机制,App只能访问自己目录下的文件,不能直接访问其他目录内容,每个APP默认都会创建以下目录结构Doucments Library tmp

  • Documents:存放应用程序产生的数据,会被iturns备份同步

  • Library:包含二个子目录:Cache 和 Preferences

    1. Preferences: 包含应用程序的偏好设置文件.可以使用NSUserDefaults类来获取和设置程序的偏好,会被iturns同步

      Caches : 用于存放应用程序专用的支持文件,保存应用程序再次启动过程中需要的信息,不会被iTunes备份同步

  • tmp: 存放临时数据,当不在用时应该删除掉临时文件,系统也有可能在程序不运行时删除该文件夹下内容
  • 获取目录方法

    Documents目录

    `

    NSArray *documrntDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *pathfile = documrntDirectory.firstObject;

    `

    获取Library路径

    `NSArray*paths=NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES);

    NSString*path=[paths objectAtIndex:0];

    NSLog(@"path:%@",path); `

    获取Caches路径

    `NSArray*paths=NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES);

    NSString*path=[paths objectAtIndex:0];

    NSLog(@"path:%@",path);`

    获取tmp路径

    `NSString*tmp=NSTemporaryDirectory();

    NSLog(@"tmp:%@",tmp);
    `

    文件写入

    `
    NSArray *documrntDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *pathfile = documrntDirectory.firstObject;
    [pathfile stringByAppendingPathComponent:@"feng.txt"];

    BOOL  ishave =  [[NSFileManager defaultManager]fileExistsAtPath:pathfile];
    if (!ishave) {
        NSLog(@"aleady have");
        return;
    }
     
    NSString *str  = @"im the king of the world";
    NSData *data  = [NSData dataWithContentsOfFile:str];
    BOOL result = [data writeToFile:pathfile atomically:YES];
    if (result) {
        NSLog(@"success");
        
    }else
    {
        NSLog(@"fail");
    }
    

    `

    文件读取

    `
    NSArray *documentsPathArr = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsPath = [documentsPathArr lastObject];
    // 拼接要写入文件的路径
    NSString *path = [documentsPath stringByAppendingPathComponent:@"feng.txt"];
    // 从路径中读取字符串
    NSString *str = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"%@", str);

    `

    得到沙盒下所有文件

    `NSFileManager *fileManager = [NSFileManager defaultManager];

    NSString *document=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) .lastObject];
    NSString *feng =[document stringByAppendingPathComponent:@"feng"];
    NSArray *fileList ;
    fileList =[fileManager contentsOfDirectoryAtPath:folder error:NULL];
    
    for (NSString *file in fileList) {
        NSLog(@"file=%@",file);
        NSString *path =[folder stringByAppendingPathComponent:file];
        NSLog(@"得到的路径=%@",path);
    }
    

    `

    你可能感兴趣的:(沙盒)