zoukankan      html  css  js  c++  java
  • IOS 创建目录/文件夹

    •IOS 应用目录简介

    iOS的沙盒机制,应用只能访问自己应用目录下的文件。iOS不像android,没有SD卡概念,不能直接访问图像、视频等内容。iOS应用产生的内容,如图像、文件、缓存内容等都必须存储在自己的沙盒内。默认情况下,每个沙盒含有3个文件夹:Documents, LibrarytmpLibrary包含CachesPreferences目录。

    • Documents:应用中用户数据可以放在这里,iTunes备份和恢复的时候会包括此目录
    • tmp:存放临时文件,iTunes不会备份和恢复此目录,此目录下文件可能会在应用退出后删除
    • Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除

    •IOS 获取应用沙盒目录

    关于定位应用目录主要用到了NSSearchPathForDirectoriesInDomains 和 NSHomeDirectory();

    1、NSSearchPathForDirectoriesInDomains 定位到沙盒的Document、Library以及Caches 目录

    (1)、定位Document 目录

    NSString * docsdir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    (2)、定位Library 目录

    NSString * docsdir = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    (3)、定位Caches 目录,Caches 目录位于Library目录下
    NSString * docsdir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];

    2、定位到tem目录的方法

    使用NSSearchPathForDirectoriesInDomains只能定位Caches、Library、Documents目录, tmp目录,不能按照此方法获得,此时可以采用NSHomeDirectory定位到应用程序主目录,也就是Document 的上一层目录

    NSString *temp = NSTemporaryDirectory();

    3、获取沙盒根目录:NSHomeDirectory()

    使用NSHomeDirectory()可以获取到沙盒的根目录,也就是Document的上一层。
    利用NSHomeDirectory()我们可以获取沙盒中的任意文件的路径
    例如:获取tmp的路径如下所示:

    NSString *filePath=[NSHomeDirectory() stringByAppendingPathComponent:@"tmp"];
    

    •IOS NSFileManager文件操作

    还是直接上代码吧!

    #pragma mark 使用NSSearchPathForDirectoriesInDomains创建文件目录
    - (void) createDir {
        
        // NSDocumentDirectory 沙盒 Documents 目录
        // NSLibraryDirectory  沙盒 Library   目录
        // NSCachesDirectory   沙盒 Library/Caches   目录
        // 使用NSSearchPathForDirectoriesInDomains只能定位Caches、Library、Documents目录,tmp目录,不能按照此方法获得
        NSString * docsdir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
        NSString *dataFilePath = [docsdir stringByAppendingPathComponent:@"head"]; // 在指定目录下创建 "head" 文件夹
        
        NSFileManager *fileManager = [NSFileManager defaultManager];
        
        BOOL isDir = NO;
        
        // fileExistsAtPath 判断一个文件或目录是否有效,isDirectory判断是否一个目录
        BOOL existed = [fileManager fileExistsAtPath:dataFilePath isDirectory:&isDir];
        
        if ( !(isDir == YES && existed == YES) ) {
            
            // 在 Document 目录下创建一个 head 目录
            [fileManager createDirectoryAtPath:dataFilePath withIntermediateDirectories:YES attributes:nil error:nil];
        }
        
        NSLog(@"+++++++++++++++++++%@",dataFilePath);
    }
    


    #pragma mark 使用 NSHomeDirectory() 创建文件目录
    - (void) createDir {
        
        // NSHomeDirectory():应用程序目录, @"tmp/temp":在tmp文件夹下创建temp 文件夹
        NSString *filePath=[NSHomeDirectory() stringByAppendingPathComponent:@"tmp/temp"];
        
        NSFileManager *fileManager = [NSFileManager defaultManager];
        
        BOOL isDir = NO;
        
        // fileExistsAtPath 判断一个文件或目录是否有效,isDirectory判断是否一个目录
        BOOL existed = [fileManager fileExistsAtPath:filePath isDirectory:&isDir];
        
        if ( !(isDir == YES && existed == YES) ) {
            
            // 在 tmp 目录下创建一个 temp 目录
            [fileManager createDirectoryAtPath:filePath withIntermediateDirectories:YES attributes:nil error:nil];
        }
        
        NSLog(@"+++++++++++++++++++%@",filePath);
    }

    关于目录/文件的其他操作

    #pragma mark fileManager 的其他操作
    - (void) fileManager:(NSString *) filePath { // filePath: 文件/目录的路径
        
        NSFileManager *fileManager = [NSFileManager defaultManager];
        
        // 取得一个目录下得所有文件名
        NSArray *files = [fileManager subpathsAtPath:filePath];
        
        // 读取某个文件
        NSData *data = [fileManager contentsAtPath:filePath];
        
        // 删除文件/文件夹
        [fileManager removeItemAtPath:filePath error:nil];
    }

    转载请指明出处:点击打开链接

    此博客已暂停维护,博主已搬家至 https://dukec.cn/
  • 相关阅读:
    C# 遍历TreeView所有节点
    Oracle创建删除用户、角色、表空间、导入导出、...命令总结
    order by,group by和having的使用
    C/C++ 数据结构与算法笔记
    使用PS随意更换相片底色
    微软SQL Server2012增加对Hadoop的支持
    MOSS2010事件接收器开发以及自定义错误提示页
    将 SharePoint 开发与其他形式的开发进行比较
    ItemAdding事件接收器中无法取到【创建者】的字段的值
    ItemAdding实现数据验证中文字段,properties.AfterProperties值为null的问题
  • 原文地址:https://www.cnblogs.com/duke-cui/p/11099154.html
Copyright © 2011-2022 走看看