一.NSFileManager方法
define PATH @"/Users/qianfeng/Desktop/c语言全部资料"
//获得当前主目录
NSLog(@"%@",NSHomeDirectory());
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Desktop/c语言全部资料"];
//创建文件管理对象(是一个单例对象)
NSFileManager *fm = [NSFileManager defaultManager];
//1.浅度遍历【常用】某个指定的目录(查看指定目录下的一级子目录或子文件)
//第一个参数:所查看的目录所在的路径;
//第二个参数:错误信息,NSError,通常情况下,写nil;
NSError *error = nil;
NSArray *array1 = [fm contentsOfDirectoryAtPath:path error:&error];
NSLog(@"****error = %@",error);
// for (id xx in array1) {
// NSLog(@"%@",xx);
// }
//2.深度遍历(可以遍历指定目录下的所有的子目录或子文件)
NSArray *array2 = [fm subpathsOfDirectoryAtPath:path error:nil];
// for (id obj in array2) {
// NSLog(@"%@",obj);
// }
//3.在指定的路径下,创建新的目录;
//1)第一个参数:路径;
//2)第二个参数:如果为YES,系统会自动帮我们创建中间目录,如果为NO,则不会,建议一般都是用YES;
//3)第三个参数:表示文件的属性,通常写nil;
//4)第四个参数:表示错误信息,写nil;
NSString *path1 = [NSHomeDirectory() stringByAppendingPathComponent:@"Desktop/fileManager/middle/dir"];
BOOL isSuccess = [fm createDirectoryAtPath:path1 withIntermediateDirectories:YES attributes:nil error:nil];
if (isSuccess) {
NSLog(@"创建成功!");
}else{
NSLog(@"创建失败");
}
//4.在指定的目录下创建文件
//1)第一个参数:路径;
//2)第二个参数:文件里的内容,NSData表示二进制数据;
//3)第三个参数:文件的属性,写nil;
//拼接文件路径
NSString *filePath = [path1 stringByAppendingPathComponent:@"file.txt"];
//准备数据
NSString *str = @"I am a good teather";
//把字符串转换成二进制数据 【****重点】
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
BOOL isSuccess2 = [fm createFileAtPath:filePath contents:data attributes:nil];
if (isSuccess2) {
NSLog(@"创建成功!");
}else{
NSLog(@"创建失败");
}
//五.目录的拷贝和移动
//1.拷贝
//原目录的路径path1
//拼接最终目录的路径
NSString *toPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Desktop/fileManager/copyDir"];
//第一个参数:原目录的路径
//第二个参数:最终目录的路径(注:该路径具体到拷贝过去之后的目录名)
//第三个单数:
BOOL isCopySuccess = [fm copyItemAtPath:path1 toPath:toPath error:nil];
if (isCopySuccess) {
NSLog(@"拷贝成功!");
}else{
NSLog(@"拷贝失败!");
}
//2.移动
NSString *toPath1 = [NSHomeDirectory() stringByAppendingPathComponent:@"Desktop/fileManager/file.txt"];
BOOL isMoveSuccess = [fm moveItemAtPath:filePath toPath:toPath1 error:nil];
if (isMoveSuccess) {
NSLog(@"移动成功!");
}else{
NSLog(@"移动失败!");
}
//3.判断目录是否存在
BOOL isExists = [fm fileExistsAtPath:[NSHomeDirectory() stringByAppendingPathComponent:@"Desktop/fileManager"]];
if (isExists) {
NSLog(@"存在");
}else{
NSLog(@"不存在");
}
//4.检测“XX”是文件还是目录?
//第一个参数:
//第二个参数:isDirectory,需要传入一个BOOL类型的地址,用于获取是否是目录还是文件
//YES--->目录
//NO---->不是目录,是文件
BOOL isFile;
[fm fileExistsAtPath:toPath1 isDirectory:&isFile];
if (isFile == YES) {
NSLog(@"是目录");
}else{
NSLog(@"不是目录,是文件");
}
//5.删除目录(文件)
BOOL isRemoveSuccess = [fm removeItemAtPath:[NSHomeDirectory() stringByAppendingPathComponent:@"Desktop/fileManager/middle"] error:nil];
if (isRemoveSuccess) {
NSLog(@"删除成功");
}else{
NSLog(@"删除失败");
}
//6.获取文件属性
NSDictionary *dict = [fm attributesOfItemAtPath:toPath1 error:nil];
NSLog(@"%@",dict);
//获得文件的大小
NSNumber *size = dict[@"NSFileSize"];
//拆开成int,NSInteger都可以
NSInteger sizeInteger = [size integerValue];
NSLog(@"文件大小为:%ld",sizeInteger);
二.NSFileHandle方法
//一.以只读的形式打开
NSFileHandle *fh = [NSFileHandle fileHandleForReadingAtPath:[NSHomeDirectory() stringByAppendingPathComponent:@"Desktop/fileManager/file.txt"]];
//1.把文件内容一次性从头读到尾
// NSData *data = [fh readDataToEndOfFile];
// //.把二进制数据转换成字符串 【******重点】
// NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
// //字符串转换成二进制数据 【******重点】
//// [str dataUsingEncoding:NSUTF8StringEncoding];
// NSLog(@"str = %@",str);
//2.给文件按字节数读取
// NSData *data1 = [fh readDataOfLength:5];
// NSString *str1 = [[NSString alloc] initWithData:data1 encoding:NSUTF8StringEncoding];
// NSLog(@"%@",str1);
// //后面接着读取,接在上次读取的位置后面往后读取
// NSData *data2 = [fh readDataOfLength:3];
// NSString *str2 = [[NSString alloc] initWithData:data2 encoding:NSUTF8StringEncoding];
// NSLog(@"%@",str2);
//3.根据光标指定的位置往后读取多少个字节;
//先移动光标到指定的位置
[fh seekToFileOffset:7];
NSData *data3 = [fh readDataOfLength:4];
NSString *str3 = [[NSString alloc] initWithData:data3 encoding:NSUTF8StringEncoding];
NSLog(@"%@",str3);
//二.以只写的形式打开文件
NSFileHandle *fh = [NSFileHandle fileHandleForWritingAtPath:[NSHomeDirectory() stringByAppendingPathComponent:@"Desktop/fileManager/file.txt"]];
//1.准备数据
NSString *dataStr = @"\n通知:今天下午学习日期类和时间戳";
NSData *data = [dataStr dataUsingEncoding:NSUTF8StringEncoding];
//2.写入方式(默认是以覆盖的形式写入)
//设置光标的位置到文件的尾部
//或者设置光标到某个具体的位置,从该位置开始写,以覆盖的形式往后写;
[fh seekToEndOfFile];
[fh writeData:data];
//3.截取文件到指定的字节
//截取文件到0个字节,相当于清空当前文件内容;
[fh truncateFileAtOffset:0];
//关闭文件
[fh closeFile];
//三.以读写的形式打开(读写的方法都可以使用)
NSFileHandle *hangle = [NSFileHandle fileHandleForUpdatingAtPath:[NSHomeDirectory() stringByAppendingPathComponent:@"Desktop/fileManager/file.txt"]];
三 NSDate
//<1>获取当前系统时间 【***重点】默认是GTM:格林威治时间
NSDate *date = [NSDate date];
NSLog(@"date1 = %@",date);
//<2>以当前时间为准,然后过了多少秒之后的时间 【****重点】
NSDate *date1 = [NSDate dateWithTimeIntervalSinceNow:8*3600];
NSLog(@"%@",date1);
//<3>以1970/01/01 GTM时间为准 然后过了多少秒后的时间
NSDate *date2 = [NSDate dateWithTimeIntervalSince1970:365*24*3600];
NSLog(@"%@",date2);
//<4>以某个具体的时间为基准,过了多少秒之后的时间 【掌握】
NSDate *date3 = [NSDate dateWithTimeInterval:24*3600 sinceDate:date2];
NSLog(@"%@",date3);
//<5>遥远的将来的一个时间
NSDate *date4 = [NSDate distantFuture];
NSLog(@"%@",date4);
//<6>遥远的过去的一个时间
NSDate *date5 = [NSDate distantPast];
NSLog(@"%@",date5);
//<7>计算当前时间与某个时间的时间间隔 【***重点】
NSTimeInterval time1 = [date1 timeIntervalSinceNow];
NSLog(@"time = %.2f",time1/3600);
//<8>比较两个时间,求两个时间的间隔
NSTimeInterval time2 = [date3 timeIntervalSinceDate:date2];
NSLog(@"time2 = %.2f",time2/3600);
//<9>比较两个时间,返回较早的时间
NSDate *earlierDate = [date2 earlierDate:date3];
NSLog(@"earlierDate = %@",earlierDate);
//<10>比较两个时间,返回较晚的时间
NSDate *laterDate = [date2 laterDate:date3];
NSLog(@"laterDate = %@",laterDate);
//1.创建一个时间戳对象
NSDateFormatter *fomatter = [[NSDateFormatter alloc] init];
//2.设置格式 【***重点】 <反斜杠不能用>
// fomatter.dateFormat = @"yyyy年MM月dd日 HH:mm:ss";
fomatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
//3.把时间对象转换成字符串对象 【***重点】
NSString * dataStr = [fomatter stringFromDate:[NSDate date]];
NSLog(@"dataStr = %@",dataStr);
//*****把字符串转换成时间对象
NSString *str = @"2016-5-13 9:00:00";
NSDate *newDate = [fomatter dateFromString:str];
NSLog(@"newDate = %@",newDate);