day11---文件管理,目录操作,日期类

一.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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,442评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,604评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,576评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,652评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,495评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,370评论 1 274
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,792评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,435评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,735评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,777评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,553评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,399评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,806评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,038评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,330评论 1 253
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,766评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,964评论 2 337

推荐阅读更多精彩内容

  • /**ios常见的几种加密方法: 普通的加密方法是讲密码进行加密后保存到用户偏好设置( [NSUserDefaul...
    彬至睢阳阅读 2,890评论 0 7
  • 一、iOS中的沙盒机制 iOS应用程序只能对自己创建的文件系统读取文件,这个独立、封闭、安全的空间,叫做沙盒。它一...
    1d5cb7cff98d阅读 1,757评论 0 0
  • 一、iOS中的沙盒机制 iOS应用程序只能对自己创建的文件系统读取文件,这个独立、封闭、安全的空间,叫做沙盒。它一...
    tzhtodd阅读 1,268评论 0 2
  • iOS开发-文件管理(一) 一、iOS中的沙盒机制 iOS应用程序只能对自己创建的文件系统读取文件,这个独立、封闭...
    MacShare阅读 1,778评论 0 6
  • 截止目前,OKCOIN上比特币的价格是27201元。我第一次知道比特币是在几年前,那时候1300。第一次正式关注是...
    Jeff_孙阅读 111评论 0 1