文件操作——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);

原文地址:https://www.cnblogs.com/zd-qs/p/4719337.html