iOS开发 NSFileManager的基本使用

一.NSFileManager介绍

1.NSFileManager是iOS中的文件管理类

2.NSFileManager可以用来进行常见的文件\文件夹操作(拷贝、剪切、创建等)

二.NSFileManager方法

1.判断文件是否存在

//创建文件管理对象
//调用defaultManager 创建一个文件管理的单例对象
//单例对象:在程序运行期间,只有一个对象存在
NSFileManager *fm = [NSFileManager defaultManager];
// YES 存在   NO 不存在
BOOL isExitsts = [fm fileExistsAtPath:filePath];
NSLog(@"%d",isExitsts);

2.判断文件是否是一个目录

BOOL isDir;[[NSFileManager defaultManager] fileExistsAtPath:filePath isDirectory:&isDir];
if (isDir) {
    NSLog(@"这是一个目录");
} else {
     NSLog(@"这不是一个目录");
}

3.判断文件是否可以读取

BOOL isReadable = [[NSFileManager defaultManager] isReadableFileAtPath:filePath];
NSLog(@"%d",isReadable);

4.判断文件是否可以写入

BOOL isWritable = [[NSFileManager defaultManager] isWritableFileAtPath:filePath];
NSLog(@"%d",isWritable);

5.判断文件是否可以操作

BOOL isExecutable = [[NSFileManager defaultManager] isExecutableFileAtPath:filePath];
NSLog(@"%d",isExecutable);

6.判断文件是否可以删除

BOOL isDeletable = [[NSFileManager defaultManager] isDeletableFileAtPath:filePath];
NSLog(@"%d",isDeletable);

7.创建文件夹(目录)

在指定的目录下创建文件夹,如果该文件夹存在,则不创建

NSError *error;
// filePath:文件夹的路径
// IntermediateDirectories:是否创建中间文件夹,YES会创建中间文件夹,NO不会创建中间文件夹
// attributes:文件夹的属性
// error: 创建失败的错误信息
BOOL isCreateDir = [[NSFileManager defaultManager] createDirectoryAtPath:filePath withIntermediateDirectories:YES attributes:nil error:&error];
if (!isCreateDir) {
   NSLog(@"%@",error);
}

8.创建文件

在指定的目录下创建文件,如果该文件名(文件名包括了后缀在内,比如test和test.html是两个文件)存在,则将这个文件删除,然后再创建;如果文件名不存在,则直接创建.此时这个文件的attributes信息全部更改,创建时间变成当前时间,修改时间变成当前时间

// path:文件的路径
// contents:文件的二进制内容(NSData)
// attributes:文件的属性
BOOL isCreateFile = [[NSFileManager defaultManager] createFileAtPath:filePath contents:nil attributes:nil];
if (isCreateFile) {
   NSLog(@"创建文件成功");
}

9.复制文件

srcPath文件必须存在,dstPath路径所在的中间路径也必须存在,创建dstPath,将内容拷贝过去,同时保留srcPath文件

NSError *error;
BOOL isCopy = [[NSFileManager defaultManager] copyItemAtPath:srcPath toPath:dstPath error:&error];
if (!isCopy) {
   NSLog(@"%@",error);
}

10.移动文件

如果dstPath不存在,则会创建dstPath,将内容拷贝过去,然后删除srcPath文件;如果dstPath存在,则会报错,同样dstPath的中间路径也必须存在,否则会报错

NSError *error;
BOOL isMove = [[NSFileManager defaultManager] moveItemAtPath:srcPath toPath:dstPath error:&error];
if (!isMove) {
   NSLog(@"%@",error);
}

11.删除文件

NSError *error;
BOOL isRemove = [[NSFileManager defaultManager] removeItemAtPath:path error:&error];
if (!isRemove) {
   NSLog(@"%@",error);
}

12.获取指定目录下文件及子目录

//使用递归的方式 获取当前目录及子目录下的所有的文件及文件夹
NSArray *subPaths = [[NSFileManager defaultManager] subpathsAtPath:dirPath];
//(推荐使用)subpathsOfDirectoryAtPath 不是使用递归的方式获取的
subPaths = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:dirPath error:nil];
NSLog(@"subPaths = %@",subPaths);

13.获取指定目录下的文件及目录信息(不获取后代路径)

NSArray *directorys = [[NSFileManager defaultManager] directoryContentsAtPath:dirPath];
//(推荐使用)contentsOfDirectoryAtPath 不是使用递归的方式获取的
directorys = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:dirPath error:nil];
NSLog(@"directorys = %@",directorys);

14.获取文件属性(信息)

NSError *error;
NSDictionary *attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:&error];
if (!error) {
   NSLog(@"%@",attributes);
}

attributes打印结果:

{
    NSFileCreationDate = "2016-04-21 10:10:28 +0000";
    NSFileExtensionHidden = 0;
    NSFileGroupOwnerAccountID = 20;
    NSFileGroupOwnerAccountName = staff;
    NSFileModificationDate = "2016-04-21 10:10:28 +0000";
    NSFileOwnerAccountID = 501;
    NSFilePosixPermissions = 420;
    NSFileReferenceCount = 1;
    NSFileSize = 26514;
    NSFileSystemFileNumber = 6055428;
    NSFileSystemNumber = 16777220;
    NSFileType = NSFileTypeRegular;
}

attributes key值介绍:

1.NSFileCreationDate(可更改时间):这个键的值需要设置为一个NSDate对象,表示目录的创建时间

2.NSFileExtensionHidden:表示目录是否隐藏

3.NSFileGroupOwnerAccountID:这个键的值需要设置为一个表示unsigned int的NSNumber对象,表示目录的组ID

4.NSFileGroupOwnerAccountName:这个键的值需要设置为一个NSString对象,表示这个目录的用户组的名字

5.NSFileModificationDate(可更改时间):这个键的值需要设置为一个NSDate对象,表示目录的修改时间

6.NSFileOwnerAccountID:这个键的值需要设置为一个表示unsigned int的NSNumber对象,表示目录的所有者ID

7.NSFilePosixPermissions:这个键的值需要设置为一个表示short int的NSNumber对象,表示目录的访问权限

8.NSFileReferenceCount:这个键的值需要设置为一个表示unsigned long的NSNumber对象,表示目录的引用计数,即这个目录的硬链接数

9.NSFileSize(不可更改):文件或者文件夹的大小,注意单位是byte

10.NSFileType:表示目录的类型(NSFileTypeDirectory,NSFileTypeRegular,NSFileTypeSymbolicLink,NSFileTypeSocket,NSFileTypeCharacterSpecial,NSFileTypeBlockSpecial,NSFileTypeUnknown)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值