2. 文件属性和目录遍历用法:NSString *filePath = @"/Users/Mac-leaf/Desktop/arr.plist"; NSString *filePath2 = @"/"; //系统根目录(只读) // 1) 判断文件是否存在 //创建文件管理对象,调用defaultManager 创建一个文件管理的单例对象 //单例对象:在程序运行期间,只有一个对象存在 NSFileManager *fm = [NSFileManager defaultManager]; BOOL isYES = [fm fileExistsAtPath:filePath]; NSLog(@"-->%d",isYES); if(isYES){ BOOL isDir; // 2)判断是否是一个目录
[fm fileExistsAtPath:filePath isDirectory:&isDir]; if (isDir) { NSLog(@"这是一个目录"); }else{ NSLog(@"这不是一个目录"); } } // 3) 判断文件是否可读 isYES = [fm isReadableFileAtPath:filePath]; // 4) 是否可写 isYES = [fm isWritableFileAtPath:filePath2]; // 5) 是否可删除 isYES = [fm isDeletableFileAtPath:filePath2]; NSLog(@"-->%d",isYES);
3.文件操作://创建文件对象 NSFileManager *fm = [NSFileManager defaultManager]; NSString *filePath = @"/Users/Mac-leaf/Desktop/arr.plist"; NSString *dirPath = @"/Users/Mac-leaf/Desktop/arr"; //1)如何获取文件的信息(属性) NSDictionary *dict = [fm attributesOfItemAtPath:filePath error:nil]; NSLog(@"%@",dict); NSLog(@"%@,%@",[dict objectForKey:@"NSFileOwnerAccountName"],dict[@"NSFileOwnerAccountName"]); //2)获取指定目录下文件及子目录 //使用递归的方式 获取当前目录及子目录下的所有的文件及文件夹 NSArray *subPaths = [fm subpathsAtPath:dirPath]; //subpathsOfDirectoryAtPath 不是使用递归的方式获取的 subPaths = [fm subpathsOfDirectoryAtPath:dirPath error:nil]; NSLog(@"subPaths = %@",subPaths); //3)获取指定目录下的文件及目录信息(不在获取后代路径) subPaths = [fm contentsOfDirectoryAtPath:dirPath error:nil]; NSLog(@"subPaths = %@",subPaths);
//创建文件管理对象 NSFileManager *fm = [NSFileManager defaultManager]; //创建目录 NSString *createDirPath = @"/Users/Mac-leaf/Desktop/a/b/c/f.txt"; fm createDirectoryAtPath:@"路径" withIntermediateDirectories:YES/NO 创建路径的时候,YES自动创建路径中缺少的目录,NO的不会创建缺少的目录 attributes:属性的字典 error:错误对象 BOOL isYES = [fm createDirectoryAtPath:createDirPath withIntermediateDirectories:YES attributes:nil error:nil]; if (isYES) { NSLog(@"成功"); } //如何创建文件 NSString *str = @"写入文件测试"; NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding]; BOOL isYes;
//fm createFileAtPath:@"路径" contents: NSData类型的数据 attributes:文件的属性的字 isYes = [fm createFileAtPath:createDirPath contents:data attributes:nil]; NSLog(@"isYes = %d",isYes); //如何copy文件 NSString *targetPath = @"/Users/Mac-leaf/Desktop/a/b/f.txt"; [fm copyItemAtPath:createDirPath toPath:targetPath error:nil]; NSString *targetPath = @"/Users/Mac-leaf/Desktop/a/f.txt";
//如何移动文件 [fm moveItemAtPath:createDirPath toPath:targetPath error:nil]; //如何删除文件 [fm removeItemAtPath:targetPath error:nil];
//获取当前时间 NSDate *d1 = [NSDate date]; //默认是0时区时间,北京东8区 //格式化日期:NSDateFormatter 日期格式化 NSDateFormatter *formatter = [NSDateFormatter new]; //设置日期的显示格式的 // yyyy 表示四位的年份 // MM 表示2位的月份 // dd 表示2位的天数 // HH 表示24小时制得小数 hh - 12小时值 // mm 表示2位的分钟数 // ss 表示2位的秒数 formatter.dateFormat = @"yyyy年MM月dd日 HH:mm:ss"; //格式化日期 NSString *dateStr = [formatter stringFromDate:d1]; NSLog(@"%@",dateStr);
4. 获取日期NSDateFormatter *formatter = [NSDateFormatter new]; formatter.dateFormat = @"yyyy年MM月dd日 HH:mm:ss"; //计算明天的此刻,距现在时间24小时以后,明天的此刻 NSTimeInterval t = 60*60*24; NSDate *tom = [NSDate dateWithTimeIntervalSinceNow:t]; //明天 NSDate *yest = [NSDate dateWithTimeIntervalSinceNow:-t]; //昨天 //格式化显示时间 NSString *timeStr = [formatter stringFromDate:yest]; NSLog(@"timeStr = %@",timeStr); //计算昨天的时间(不常用) NSDate *now = [NSDate date]; //当前时间-24小时的秒数 NSDate *zt = [now addTimeInterval:-t]; timeStr = [formatter stringFromDate:zt]; NSLog(@"zt = %@",zt);
NSDate *d = [NSDate date]; //创建日期的对象:NSCalendar 日期类,可以帮我们快速的获取年月日 时分秒信息 NSCalendar *cal = [NSCalendar currentCalendar]; //cal components:获取日期的哪些部分 fromDate:日期对象 NSDateComponents *coms = [cal components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:d]; NSLog(@"year:%ld,month:%ld,day:%ld",coms.year,coms.month,coms.day);
#import "SingletonTools.h" //定义一个全局变量 static SingletonTools *instances = nil; @implementation SingletonTools -(id)copyWithZone:(NSZone*)zone{ return self; } +(id)allocWithZone:(NSZone*)zone{ //线程保护 @synchronized(self) { if (instances == nil) { //调用父类的alloc instances = [super allocWithZone:zone]; return instances; } } return instances; } -(id)retain{ return self; } -(NSUInteger)retainCount{ return NSUIntegerMax; } -(oneway void)release{ } -(id)autorelease{ return self; } //单例的接入点方法 +(instancetype)shareInstances{ //目的:保证对象必须唯一 if(instances == nil){ //创建一个对象 instances = [[SingletonTools alloc] init]; return instances; } return instances; } @end