OC关于NSFileManager的再详解
来源:互联网 发布:天下3男脸数据 编辑:程序博客网 时间:2024/06/02 07:33
#define PATH @"/Users/qianfeng/Desktop/CheckOut"
#define ShowArray(array) for(NSString *str in array){\
NSLog(@"%@",str);\
}
int main(int argc,constchar * argv[]) {
@autoreleasepool {
//创建单例对象,即是文件管理对象
NSFileManager *fileManager=[NSFileManagerdefaultManager];
NSError *error=nil;//定义一个空的错误信息
#pragma mark -浅度遍历
#pragma mark 因为这个方法只查看在指定目录下的文件和子目录,并不查看子目录下的内容
//查看某个目录下的文件或者子目录
NSArray * array=[fileManagercontentsOfDirectoryAtPath:PATHerror:&error];
//如果查看失败,例如目录不存在,该方法会创建一个NSError对象,让传入的指针指向这个对象
//如果成功,会创建一个数组,装文件和子目录名称,返回数组地址
if (error) {
NSLog(@"%@",error);
exit(-1);//表示异常退出
}
ShowArray(array);
#pragma mark - 深度遍历
#pragma mark 返回指定目录下的文件名和子目录名,同时遍历子目录下的内容
NSArray *array2=[fileManagersubpathsOfDirectoryAtPath:PATHerror:&error];
if (error) {
NSLog(@"%@",error);
exit(-1);
}
ShowArray(array2);
#pragma mark - 创建路径
//拼接路径
NSString * pathString=[PATH stringByAppendingPathComponent:@"down/up/dir"];
//创建目录
[fileManager createDirectoryAtPath:pathStringwithIntermediateDirectories:YESattributes:nilerror:&error];
//第二个参数表示是否创建中间目录,(此例中创建中间目录down文件夹,up文件夹),如果选NO,当缺失中间目录,创建失败,报错。如果选YES,会自动补全缺失的中间目录,即中间目录也会被创建。可以同时添加多个中间目录
//第三个参数表示目录属性,通常传入nil,表示默认属性
if (error) {
NSLog(@"%@",error);
exit(-1);
}
#pragma mark - 创建文件
NSString * str=@"我是写入的字符串";
NSData * data=[strdataUsingEncoding:NSUTF8StringEncoding];
//将str转换成二进制数据包NSData类型
BOOL ret=[fileManagercreateFileAtPath:[PATHstringByAppendingPathComponent:@"write.txt"]contents:dataattributes:nil];
//第二个参数contents:是写入文件的内容。如果只创建文件,不想写入内容,填入nil
//通过返回值报错
if (ret==NO) {
//perror 可以打印出当前错误
//打印最近一次系统错误信息
perror("creatFile");
exit(-1);
}
#pragma mark - 删除文件
//删除目录或文件
[fileManager removeItemAtPath:[PATHstringByAppendingPathComponent:@"down"]error:&error];
if (error) {
NSLog(@"%@",error);
}
#pragma mark - 判断文件是否存在
NSString *filePath=[PATHstringByAppendingPathComponent:@"write.txt"];
//判断一个文件是否存在,是否是目录
BOOL isDirectory=NO;
BOOL ret2=[fileManagerfileExistsAtPath:filePathisDirectory:&isDirectory];
NSLog(@"%d-%d",ret2 ,isDirectory);
//如果文件存在,返回值ret为YES,否则为NO
//如果文件为目录,参数isDirectory为YES,否则为NO
#pragma mark - 获取一个文件的属性
NSDictionary *attribute=[fileManagerattributesOfItemAtPath:PATHerror:&error];
if (error) {
NSLog(@"%@",error);
exit(-1);
}
NSLog(@"%@",attribute);
//取出文件大小,取出的是一个NSNumber对象,通过integerValue返回数字
//size_t 一般用来计数
size_t size=[[attributeobjectForKey:@"NSFileSize"]integerValue];//打印出文件的大小
NSLog(@"%lu",size);
#pragma mark - 复制文件
NSString *dst=[PATHstringByAppendingPathComponent:@"拷贝文件.txt"];
NSString *src2=[PATHstringByAppendingPathComponent:@"write.txt"];
//目的目录一定是完整的,最后落实到生成文件的名字,即使生成文件和源文件同名,也必须写明
[fileManagercopyItemAtPath:src2toPath:dsterror:&error];
if (error) {
NSLog(@"%@",error);
exit(-1);
}
#pragma mark - 移动文件或目录,相当于把文件内容移到目标文件
[fileManager moveItemAtPath:[PATHstringByAppendingPathComponent:@"复制文件3"]toPath:[PATHstringByAppendingPathComponent:@"未命名文件夹/复制文件3"]error:&error];
if (error) {
NSLog(@"%@",error);
exit(-1);
}
需要注意的是当你移动文件时,如果原路径和新路径都在同一个文件夹中,那么新文件名会覆盖掉旧的文件名
- OC关于NSFileManager的再详解
- OC的文件管理类NSFileManager类的使用详解
- OC -- NSFileManager文件系统的管理
- OC NSFileManager
- 20-OC中NSFileManager的常见方法
- iOS 关于NSFileManager的搜集
- OC中关于NSFileManager判断是否存在某一个文件
- OC语言--NSFileManager& NSFileHandle
- oc NSFileManager NSFileHandle 详细
- OC 文件管理器NSFileManager
- OC 文件部分 (NSFileManager NSData NSFileHandle 的应用)
- OC语言学习10-NSFileManager类的应用
- iOS - OC NSFileManager文件管理
- 关于 OC 的self = [super init]详解
- ios NSFileManager 用法详解
- ios NSFileManager 用法详解
- ios NSFileManager 用法详解
- NSFileManager 使用 详解
- learn_python 变量
- Linux 数据库学习---mysql创建数据库、表
- 技术点
- URIs, URLs, and URNs
- 10种类型的IT人士性格分析
- OC关于NSFileManager的再详解
- public,private,protected,以及不写时的区别
- 远程推送通知
- 【Thinking in Java笔记】怎么使用protected关键字
- 7. JavaScript RegExp 对象
- AndroidStudio下BuildTypes和ProductFlavors动态编译并重命名apk
- register、volatile、inline
- 笔记三之AsProtect
- 博文卡特职位招聘