Foundation(2)文件 日期

Foundation--文件操作

文件管理器简介

//  User.h

#import

 

@interface User : NSObject

 

@property (nonatomic,assign)int age;

 

+ (User *)defaultUser;

 

@end

//  User.m

#import "User.h"

 

@implementation User

 

//静态变量,整个程序运行完成的时候才会被释放掉,mian函数运行完成<</span>用此实现单例>

static User * instance = nil;

 

+ (User *)defaultUser

{

//    return [[self alloc] init];

   

    if (instance == nil)

    {

        instance = [[self alloc] init];

    }

    return instance;

   

}

 

@end

//  main.m

#import

#import "User.h"

 

int main(int argc, const char * argv[])

{

 

    @autoreleasepool {

       

       

        //1.文件管理器

        NSFileManager * f1 = [NSFileManager defaultManager];

        NSLog(@"%p",f1);

       

        NSFileManager * f2 = [NSFileManager defaultManager];

        NSLog(@"%p",f2); 

       

        NSFileManager * f3 = [[NSFileManager alloc] init];

        NSLog(@"f3 %p",f3);

       

        NSFileManager * f4 = [NSFileManager defaultManager];

        NSLog(@"%p",f4);

      // f1 f2 f4所指对象相同:即它们是同一个对象,defaultManager得到的对象它是一个单例,而用alloc init

//得到的对象f3 f1 f2 f4不同

        //在整个程序没有退出之前,只需要创建一次,我们就可以把它写成单利模式

// 下面模仿上面的NSFileManager:用defaultUser得到的是相同的对象,用alloc init得到的是不同的对象

        //简单的单例模式

        User * u1 = [User defaultUser];

        u1.age = 10;

       

       

        NSLog(@"u1 %p",u1);

       

       

        User * u2 = [User defaultUser];

       

        NSLog(@"u2 %p age = %d",u2,u2.age);

       

        User * u3 = [[User alloc] init];

       

        NSLog(@"u3 %p",u3);

        // 总结一下已经学过的设计模式

        //1.组合模式,(聚合模式)

        //2.单利模式

        //3.策略模式(封装变化点),block

        //4.向上抽象 (protocol(协议))

        //5.享元设计模式(NSString池原理)

    }

    return 0;

}

获取文件属性

#import

 

int main(int argc, const char * argv[])

{

 

    @autoreleasepool {

       

       

       

        //1.获取文件管理器

        NSFileManager * fileManager = [NSFileManager defaultManager];

        NSString * path = @"/Users/aplle/Desktop/test.txt";

        NSError * error;

        NSDictionary * dic = [fileManager attributesOfItemAtPath:path error:&error];

   

       

        NSLog(@"dic %@",dic);

       

        if (error == nil)

        {

           NSDate * date = [dic objectForKey:NSFileCreationDate];

            NSString * size = [dic objectForKey:NSFileSize];

            NSLog(@" date = %@, size = %@",date,size);

        }

    }

    return 0;

}

获取目录下的文件与子目录列表

#import

 

int main(int argc, const char * argv[])

{

 

    @autoreleasepool {

       

       

       

        //2

        NSFileManager * fileManager = [NSFileManager defaultManager];

        NSString * path = @"/Users/aplle/Desktop/other";

        NSError * error;

        //能够逐级的获得所有子集的目录

        NSArray * array = [fileManager subpathsOfDirectoryAtPath:path error:&error];

        NSLog(@"array %@",array);

       

    }

    return 0;

}

管理目录

#import

 

int main(int argc, const char * argv[])

{

 

    @autoreleasepool {

       

       

       

        //2 移动目录 移动就是剪切操作

       

       

        //3.删除

       

       

        //4.拷贝文件

        NSFileManager * fileManager = [NSFileManager defaultManager];

        NSString * path = @"/Users/aplle/Desktop/myfolder";

        NSString * pathTo = @"/Users/aplle/Desktop/newmyfolder";

        NSError * error;

        BOOL isCopySuccess = [fileManager copyItemAtPath:path toPath:pathTo error:&error];

        if(isCopySuccess)

        {

            NSLog(@"拷贝成功");

        }

        else

        {

            NSLog(@"error %@",error);

        }

       

    }

    return 0;

}

管理文件

#import

 

int main(int argc, const char * argv[])

{

 

    @autoreleasepool {

       

        //1.获得文件

        //mp3.mp4 rmvb mkv pdf doc txt都可以用NSdata读取

       

       

       

       

        NSFileManager * fileManager  = [NSFileManager defaultManager];

        NSString * path  = @"/Users/aplle/Desktop/屏幕快照副本.png";

        NSError * error;

        BOOL isremove = [fileManager removeItemAtPath:path error:&error];

        if (isremove)

        {

            NSLog(@"删除成功");

        }

        else

        {

            NSLog(@"error %@",error);

        }

       

    }

    return 0;

}

使用NSData处理数据

#import

 

int main(int argc, const char * argv[])

{

 

    @autoreleasepool {

       

        //音频文件,文本文件,视频文件就必须使用NSData数据类

       

       

       

        //当需要把多个NSData数据拼接成一个数据存储的时候,就要想到使用NSMutableData这个类型

        NSString * str1 = @"好好学习";

        NSString * str2 = @"天天向上";

        NSString * str3 = @"今天休息";

       

        NSMutableData * muData = [[NSMutableData alloc] init];

       

        NSData * d1 = [str1 dataUsingEncoding:NSUTF8StringEncoding];

        NSData * d2 = [str2 dataUsingEncoding:NSUTF8StringEncoding];

        NSData * d3 = [str3 dataUsingEncoding:NSUTF8StringEncoding];

       

        //appendData 能够把nsdata对象加入到 muData对象中

        [muData appendData:d1];

        [muData appendData:d2];

        [muData appendData:d3];

       

        NSString * path = @"/Users/aplle/Desktop/传智播客校训.txt";

        //NSMutableData是继承至NSData的所以可以调用writeToFile 把数据写入到一个指定的目录下

        BOOL iswriteSucess = [muData writeToFile:path atomically:YES];

        if (iswriteSucess)

        {

            NSLog(@"创建成功");

        }

        else

        {

            NSLog(@"创建失败");

        }

       

    }

    return 0;

}

 

Foundation--日期操作

日期操作

#import

 

int main(int argc, const char * argv[])

{

 

    @autoreleasepool {

       

        //获得日期对象

        NSDate * date = [NSDate date];

        NSLog(@"date %@",date);

       

    }

    return 0;

}

比较日期☆

疑问处红色已经标记

#import

 

int main(int argc, const char * argv[])

{

 

    @autoreleasepool {

       

        NSTimeInterval secondes = 24 * 60 * 60;

       

        NSDate * now = [NSDate date];

       

        //模拟昨天 24 * 60 * 60

        NSDate * yesDay = [now addTimeInterval:-secondes]; // 这里的返回值是id类型想想该如何理解?

       

        //比较两个日期是否相同

       

        BOOL isEqual = [now isEqualToDate:yesDay];

        if (isEqual)

        {

            NSLog(@"相同");

        }

        else

        {

            NSLog(@"不相同");

        }

       

        //获得两个日期中比较早的一个

        NSDate * earler = [yesDay earlierDate:now];

        NSLog(@"%@",earler);

       

        NSDate * later = [yesDay laterDate:now];

        NSLog(@"later %@",later);

       

    }

    return 0;

}

格式化日期☆

下面的所有东西该如何理解?

#import

 

int main(int argc, const char * argv[])

{

 

    @autoreleasepool {

       

       

       

        //把字符串转换成日期

       

       

        //处理时区问题

       

        NSDate * newDate = [NSDate date];

 

        NSDateFormatter * f = [[NSDateFormatter alloc] init];

        [f setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

       

        NSString * str = [f stringFromDate:newDate];

        //设置时差计算方法 //GTM

        [f setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];

       

        NSLog(@"%@",str);

       

    }

    return 0;

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值