方便在iOS中进行文件管理

作者: 时时彩平台-编程  发布:2019-09-13

最近一直在做文件管理相关的功能,苹果官方提供了一个最主要的接口:NSFileManager,方便在iOS中进行文件管理。本文主要对常用的功能进行整理和归纳,以便学习之用。

NSFileManager 简介

  • 它是用来管理文件系统的一个类
  • 常用来对文件夹、文件进行相关操作(创建、拷贝、移动、删除等等。。)
  • 采用单例模式,获取方式:[NSFileManager defaultManager]

开始使用

  1. 创建一个单例对象
NSFileManager *fileManager = [NSFileManager defaultManager];
  1. 判断文件是否存在
 filePath : NSString类型 表示一个文件的路径 BOOL isExists = [fileManager fileExistsAtPath:filePath];
  1. 判断目录是否存在
BOOL isDir; [fileManager fileExistsAtPath:filePath isDirectory:&isDir]; if  { NSLog; }else { NSLog; }
  1. 判断文件是否可读、可写、可删除 结果都返回BOOL
[fileManager isWritableFileAtPath:filePath];[fileManager isReadableFileAtPath:filePath];[fileManager isDeletableFileAtPath:filePath];

获取

  1. 文件属性列出常用的文件属性:

     NSFileAttributeKey const NSFileType; : NSFileAttributeType const NSFileTypeDirectory; NSFileAttributeType const NSFileTypeRegular; NSFileAttributeKey const NSFileSize; NSFileAttributeKey const NSFileModificationDate; //修改时间 NSFileAttributeKey const NSFileCreationDate; //创建时间
    

剩下的在官方文档中查询。

  1. 获取文件属性的两种方式attributesOfItem方法获取单个文件的属性字典。/**获取文件属性

     @param path 文件路径 @param error 错误信息 @return 返回一个属性字典 */ - (nullable NSDictionary<NSFileAttributeKey, id> *)attributesOfItemAtPath:(NSString *)path error:(NSError **)error;
    

利用文件遍历器获取一个文件夹中所有文件的属性(这个方法是我这次项目使用的关键数据源方法)//文件属性遍历器NSDirectoryEnumerator *enumerator = [fileManager enumeratorAtPath:path];

 //遍历属性 NSString *fileName; //下面这个方法最为关键 可以给fileName赋值,获得文件名。 while (fileName = [enumerator nextObject]) { //跳过子路径 [enumerator skipDescendants]; //获取文件属性 //enumerator.fileAttributes 的后面可以用点语法点出许多许多的属性。 NSLog(@"%@",enumerator.fileAttributes); }
  1. 获取文件列表如果单单获取文件列表名,有个直接的方法:- (nullable NSArray<NSString *> *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error;但如果还需要其他操作,就用下面两个方法更为科学:
  • 第6点中的enumerator就可以很好的获取文件列表(当然也可以递归到子目录中),而且还能获取到属性,一举两得。所以我在项目中主要用的就是那个方法。当然还有其他方法:
  • 第二种a.获取指定目录下以及子目录的所有文件夹和文件路径。[fileManager subpathsAtPath:filePath];b.获取指定目录下的所有文件夹和文件的路径[fileManager subpathsOfDirectoryAtPath: filePath error:nil];有了这两个方法,再遍历路径数组,结合获取属性的那个方法,就可以完整获得多个文件属性字典。当然,还是我所用的那个方法更为简便OO。

创建与编辑

  1. 创建目录一般在判断了目录是否存在之后,若不存在,就会创建一个目录:/**创建目录

     @param path 路径 @param createIntermediates YES/NO 创建路径的时候,YES自动创建路径中缺少的目录,NO的不会创建缺少的目录 @param attributes 属性的字典 @param error 错误对象 @return 返回是否成功 */ - createDirectoryAtPath:(NSString *)path withIntermediateDirectories:createIntermediates attributes:(nullable NSDictionary<NSString *, id> *)attributes error:(NSError **)error;
    
  2. 创建文件[fileManager createFileAtPath:createDirPath contents:data attributes:nil];

  3. 拷贝[fileManager copyItemAtPath:createDirPath toPath:targetPath error:nil];

  • 移动、重命名(重命名本质上就是移动文件到一个新的路径)[fm moveItemAtPath:createDirPath toPath:targetPath error:nil];
  • 删除[fm removeItemAtPath:targetPath error:nil];

本文由时时彩平台发布于时时彩平台-编程,转载请注明出处:方便在iOS中进行文件管理

关键词: