• 文件操作——NSFileManager


    NSFileManager:

    对文件本身操作。

    创建文件管理对象(单例)

    #define PATH @"/users/XXX/Desktop/files"

     NSFileManager * manager = [NSFileManager defaultManager];

    浅遍历

        - (NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0);

    获取指定路径下的内容,返回的是文件名的数组;

    NSError __autoreleasing *error = nil;

    NSArray *contents = [manager contentsOfDirectoryAtPath:PATH error:&error];

    深遍历

         - (NSArray *)subpathsOfDirectoryAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0);

     返回的是所有文件的相对路径;

    NSArray *contents1 = [manager subpathsOfDirectoryAtPath:PATH error:&error];

    /**

         *  创建目录

         *  @param 1 路径(需要包含新的文件名)

            @param 2 是否自动创建中间层目录

            @param 3 文件属性

            @param 4 错误信息

         * @return 创建的结果

         */

        NSError __autoreleasing *error = nil;

        BOOL rec = [manager createDirectoryAtPath:[NSString stringWithFormat:@"%@/ttttt/newFile",PATH] withIntermediateDirectories:NO attributes:nil error:&error];

        NSLog(@"%@",rec?@"创建成功":@"创建失败");

    /**

         *  创建文件

         *  参数一: 路径(包含新的文件名)

         *   参数二: 文件内容的二进制数据流

         注意: 每次创建新的文件,都会覆盖掉原文件

         */

        NSString *str = @"hello world ni hao";

        NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];

        BOOL rec1 = [manager createFileAtPath:[NSString stringWithFormat:@"%@/未命名文件",PATH] contents:data attributes:nil];

        NSLog(@"%d",rec1);

    获取文件(这里说的文件包括文件夹和文件)的属性

    NSDictionary * dic = [manager attrbutesOfItemAtPath:PATH error: &error];

    NSLog(@"%@", dic);

    设置文件属性

    NSMutableDictionary * newDic = [NSMutableDictionary dictionaryWithDictionary:dic];

    [newDic setObject:@292 forKey:NSFilePosixPermissions];

     [newDic setObject:@1 forKey:NSFileExtensionHidden];

    [manager setAttributes: newDic ofItemAtPath:PATH error : &error];

    检测文件(目录)是否存在:

    BOOL rec = [manager fileExistsAtPath:PATH];

    BOOL isDir = NO;//接受是否是目录的返回值

    rec = [manager fileExistsAtPath:PATH isDirectory:&isDir];

    /*

         copy

         将指定路径的文件或者目录(深遍历)拷贝到另外一个指定的路径(包含文件名)

         返回成功或者失败

         */

        BOOL rec = [manager copyItemAtPath:[NSString stringWithFormat:@"%@/newDir",PATH] toPath:[NSString stringWithFormat:@"%@/file1/newDir",PATH] error:nil];

        NSLog(@"%d",rec);

        /*

         move

         可以移动文件或者文件夹(深遍历)

         路径要包含新的名字,所以移动文件可以实现文件的改名

         */

        [manager moveItemAtPath:[NSString stringWithFormat:@"%@/file1",PATH] toPath:@"/users/aaron/desktop/file1" error:nil];

        /*

         remove

         */

        BOOL state = [manager removeItemAtPath:PATH error:nil];

        NSLog(@"state = %d",state);

  • 相关阅读:
    开源牛人 zcbenz
    分享一个快速的Json(反)序列化开源项目 Jil
    影响当今世界发展的重要技术难题
    余额表的处理方法
    使用TypeScript开发程序
    docker 和 nginx 配合的一个坑
    Excel 的一些使用记录
    mysql 用户授权相关
    容器数量增加导致 fs.inotify.max_user_instances 超过限制
    在 EF Core 中如何输出 linq 转换后的 sql 语句
  • 原文地址:https://www.cnblogs.com/zd-qs/p/4719337.html
Copyright © 2020-2023  润新知