您的位置:首页 > 移动开发 > IOS开发

ios开发之文件系统操作

2017-02-04 17:07 609 查看

iOS的沙盒机制

iOS不像Android,没有SD卡概念,不能直接访问图像、视频等内容。iOS应用产生的内容,如图像、文件、缓存内容等都必须存储在自己的沙盒内。默认情况下,每个沙盒含有3个目录:Documents, Library 和 tmp。Library包含Caches、Preferences目录。我们只能操作沙盒中的目录与文件。





一系列API

iOS提供了一系列API来操作目录与文件。以下将对其介绍。

创建与删除

创建与删除目录

NSFileManager
- (BOOL)createDirectoryAtPath:(NSString *)path withIntermediateDirectories:(BOOL)createIntermediates attributes:(nullable NSDictionary<NSString *, id> *)attributes error:(NSError **)error;


如果目录不存在则创建,如果存在则报错。(类似于mkdir函数)

参数path表示目录路径;参数createIntermediates表示如果有中间目录是否创建,一般设置为NO;参数attributes表示创建目录的属性,一般设置为nil;参数error在创建失败后显示出错信息。

NSFileManager
- (BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error;


如果目录存在则删除,如果不存在则报错。如果目录不是空的,一样可以删除。

参数path表示目录路径;参数error在删除失败后显示出错信息。

创建与删除文件

NSFileManager
- (BOOL)createFileAtPath:(NSString *)path contents:(nullable NSData *)data attributes:(nullable NSDictionary<NSString *, id> *)attr;


如果文件不存在则创建并写入数据,如果存在则先截断再写入数据。(类似于creat函数)

参数path表示文件路径;参数data表示写入的数据;参数attr表示创建文件的属性,一般设置为nil。

NSFileManager
- (BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error;


删除文件的API和删除目录的API是一样的。ios使用同一个API实现了删除目录与删除文件功能。(unix中使用rmdir删除目录,使用unlink删除文件)

获取与修改

获取文件属性

NSFileManager
- (nullable NSDictionary<NSFileAttributeKey, id> *)attributesOfItemAtPath:(NSString *)path error:(NSError **)error


获取文件对应的属性,属性存放在NSDictionary结构中。(类似于unix中的stat函数)

参数path表示文件路径;参数error在获取失败后显示出错信息。

以下为文件属性输出的一个例子

attr = {
NSFileCreationDate = "2017-02-04 08:09:26 +0000";
NSFileExtensionHidden = 0;
NSFileGroupOwnerAccountID = 20;
NSFileGroupOwnerAccountName = staff;
NSFileModificationDate = "2017-02-04 08:09:26 +0000";
NSFileOwnerAccountID = 501;
NSFilePosixPermissions = 493;
NSFileReferenceCount = 2;
NSFileSize = 68;
NSFileSystemFileNumber = 1098174;
NSFileSystemNumber = 16777218;
NSFileType = NSFileTypeDirectory;
}


修改文件属性

- (BOOL)setAttributes:(NSDictionary<NSFileAttributeKey, id> *)attributes ofItemAtPath:(NSString *)path error:(NSError **)error


修改文件对应的属性。

参数attributes 包含要修改的文件属性。参数error在修改失败后显示出错信息。

获取目录内容

- (nullable NSArray<NSString *> *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error


获取目录中所有文件的名字。返回值是字符串列表。

参数path表示目录路径;参数error在获取失败后显示出错信息。

获取文件内容

- (nullable NSData *)contentsAtPath:(NSString *)path;


获取文件的内容。

参数path表示文件路径

修改文件内容
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息