OC关于NSFileManager的再详解
2015-08-17 11:55
330 查看
#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:filePath
isDirectory:&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:dst
error:&error];
if (error) {
NSLog(@"%@",error);
exit(-1);
}
#pragma mark - 移动文件或目录,相当于把文件内容移到目标文件
[fileManager moveItemAtPath:[PATHstringByAppendingPathComponent:@"复制文件3"]toPath:[PATHstringByAppendingPathComponent:@"未命名文件夹/复制文件3"]error:&error];
if (error) {
NSLog(@"%@",error);
exit(-1);
}
需要注意的是当你移动文件时,如果原路径和新路径都在同一个文件夹中,那么新文件名会覆盖掉旧的文件名
#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:filePath
isDirectory:&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:dst
error:&error];
if (error) {
NSLog(@"%@",error);
exit(-1);
}
#pragma mark - 移动文件或目录,相当于把文件内容移到目标文件
[fileManager moveItemAtPath:[PATHstringByAppendingPathComponent:@"复制文件3"]toPath:[PATHstringByAppendingPathComponent:@"未命名文件夹/复制文件3"]error:&error];
if (error) {
NSLog(@"%@",error);
exit(-1);
}
需要注意的是当你移动文件时,如果原路径和新路径都在同一个文件夹中,那么新文件名会覆盖掉旧的文件名
相关文章推荐
- Oracle数据库登录错误提示提示ora 01033:oracle initialization or shutdown in progress,oracle11g
- 共享内存
- POJ 1017 Packets(贪心)
- 停止数据库
- C#实现的简单链表类实例
- java的内存回收
- kali Linux使用蓝牙
- 单件转化成本CPA优化策略
- 带GPG签名的Git tag
- Java字节码操作
- web相关资源服务地址
- QueryInterface
- AVplayer的使用详解 完整注释
- scheduleAtFixedRate 与 scheduleWithFixedDelay 的区别
- jQuery获取多种input值的方法
- Java Persistence with MyBatis 3(中国版) 第五章 与Spring集成
- 图片预览示例
- 类名.class, class.forName(), getClass()区别
- 在Windows Server 2003 的IIS6.0发布网站出现401错误
- Android 开发 对话框Dialog dismiss和hide方法的区别