iOS开发-文件管理(一)

一、iOS沙盒机制

每个app都有自己的沙盒目录,iOS应用程序只能对自己创建的文件进行读写操作,包括图片、音视频、plist文件、sqlite等资源文件。

  • 每个应用程序都有自己独立的存储空间(沙盒目录)
  • 一般程序之间不可相互访问

模拟器沙盒位置

/Users/lihuaguang/Library/Developer/CoreSimulator/Devices/3DAC7BC1-CDCB-457E-B1E0-0AE3883F306E/data/Containers/Data/Application/6EA22853-82E5-450D-884B-7112C2F846E


这个目录包含三个子目录,分别是Document、Library和tmp

  • Document:一般持久数据都放在此目录,可以在当中添加子目录和文件,iTunes备份和恢复时,会包含此目录。
  • Library:设置程序默认设置和其他信息,NSUserDefaults保存的数据就保存在此目录。
  • tmp:创建临时文件目录,当iOS设备重启时,文件会被自动清除。

获取沙盒目录

    // 根目录(home)目录
    NSString *homePath = NSHomeDirectory();
    
    // Document目录
    NSArray  *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *docPath = [paths lastObject];
    
    // Library目录
    NSArray  *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
    NSString *libraryPath = [paths lastObject];
    
    // Library中的Cache
    NSArray  *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *cachePath = [paths lastObject];
    
    // temp路径
    NSString *temp = NSTemporaryDirectory();

二、文件路径(NSString)

    // 获得此路径的各个组成部分
    NSArray *components = [docPath pathComponents];
    
    // 提取路径的最后一个组成部分
    NSString *filePath = [docPath lastPathComponent];
    
    // 删除路径的最后一个组成部分
    NSString *path1 = [docPath stringByDeletingLastPathComponent];
    
    // 获取制定文件目录
    NSString *path2 = [docPath stringByAppendingPathComponent:@"test.plist"];
    
    // 获取除去扩展名的路径
    NSString *path3 = [path2 stringByDeletingPathExtension];
    
    // 获取路径扩展名
    NSString *path4 = [path2 pathExtension];
    
    // 路径最后部分追加扩展名
    NSString *path5 = [path3 stringByAppendingPathExtension:@"jpg"];

三、文件管理常用方法(NSFileManager)

    // 判断文件是否存在
    NSFileManager *fileManager = [NSFileManager defaultManager];
    if (![fileManager fileExistsAtPath:filePath]) {
        
    }
    
    // 文件不存在,则创建
    BOOL isCreate = [fileManager createFileAtPath:filePath contents:nil attributes:nil];
    
    // 获取文件数据
    NSData *fileData = [fileManager contentsAtPath:path1];
    
    // 写入文件
    BOOL isCreate = [fileManager createFileAtPath:filePath contents:data attributes:nil];
    BOOL isSave = [dataArr writeToFile:filePath atomically:YES];
    
    // 移动文件
    BOOL isMove = [fileManager moveItemAtPath:fromPath toPath:toPath error:nil];
    
    // 拷贝文件
    BOOL isCopy = [fileManager copyItemAtPath:fromPath toPath:toPath error:nil];
    
    // 删除文件
    BOOL isDelete = [fileManager removeItemAtPath:path error:nil];
    
    // 比较文件内容是否一致
    BOOL isSame = [fileManager contentsEqualAtPath:path1 andPath:path2];
    
    // 获取文件大小
    NSDictionary *attrDic = [fileManager attributesOfItemAtpath:sourcePath error:nil];
    NSNumber *fileSize = [attrDic objectForKey:NSFileSize];



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值