ios开发之文件系统操作

来源:互联网 发布:centos gnome desktop 编辑:程序博客网 时间:2024/05/06 05:30

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表示文件路径

修改文件内容

0 0