iOS_文件操作 NSNumber NSValue NSDate

本文介绍如何使用 NSFileManager 进行文件和目录的操作,包括创建、读取、复制、移动及删除文件等。同时展示了文件读写操作的具体实现,并介绍了 NSValue 和 NSNumber 的使用方法以及 NSDate 的日期处理。
//------------NSFileManager 文件或目录管理类-------------
//1.创建对象
        //defaultManager创建出来对象都是同一个对象(单例模式:想让一个类只创建一个对象)
        NSFileManager *fm = [NSFileManager defaultManager];
        NSFileManager *fm_1 = [NSFileManager defaultManager];
        NSLog(@"%p---%p",fm,fm_1);
        
//2. 获取目录下的所有文件和目录
        //不显示子目录
        NSArray *array = [fm contentsOfDirectoryAtPath:@"/Users/apple/Desktop/dir" error:nil];
        NSLog(@"%@",array);
        //包括子目录
        NSArray *array_1 = [fm subpathsOfDirectoryAtPath:@"/Users/apple/Desktop/dir" error:nil];
        NSLog(@"%@",array_1);
        
//3.创建目录。创建文件
        //参数2表示是否创建中间目录
        BOOL b = [fm createDirectoryAtPath:@"/Users/apple/Desktop/dir/a.txt" withIntermediateDirectories:YES attributes:nil error:nil];
        NSLog(@"%i",b);//创建了文件或已经存在,都会返回1
        
        //创建文件
        bool b_1 = [fm createFileAtPath:@"/Users/apple/Desktop/dir/a" contents:nil attributes:nil];
        NSLog(@"%i",b_1);
        
//4.复制文件, 移动文件, 删除文件
        //参数1:源文件   参数2:目标文件
        bool b_2 = [fm copyItemAtPath:@"/Users/apple/Desktop/dir/abc/123.txt" toPath:@"/Users/apple/Desktop/dir/ab.txt" error:nil];
        NSLog(@"%i",b_2);//操作成功范围1.。当目标文件存在是返回0
        
        //移动文件
        bool b_3 = [fm moveItemAtPath:@"/Users/apple/Desktop/dir/abc/123.txt" toPath:@"/Users/apple/Desktop/dir/abcd.txt" error:nil];
        NSLog(@"%i",b_3);//目标文件必须是.txt结尾
        
        //删除文件
        bool b_4 = [fm removeItemAtPath:@"/Users/apple/Desktop/dir/abc" error:nil];
        NSLog(@"%i",b_4);//移除第二个文件是,第一个会恢复
        
//5.判断文件是否存在
        bool b_5 = [fm fileExistsAtPath:@"/Users/apple/Desktop/dir/word"];
        NSLog(@"%i",b_5);
        
 
     //----------------文件读写操作 NSFileHandle------------------

//1. 打开文件
        //(1)创建对象打开文件
        NSFileHandle *fh = [NSFileHandle fileHandleForReadingAtPath:@"/Users/apple/Desktop/dir/abc.txt"];
        if (fh == nil) {
            NSLog(@"文件打开失败");
            return 1;
        }
        NSLog(@"文件打开成功");
        
        //(2)读取文件数据
        //读取指定长度的数据   readDataOfLength:12
        //一直读取直到文件末尾 readDataToEndOfFile
        NSData *data = [fh readDataOfLength:100];
        //NSLog(@"data = %@",data);//NSData表示二进制的数据
        //读取出得二进制数据转化为字符串
        NSString *info = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
        NSLog(@"%@",info);
 
//写文件
        NSFileHandle *fh_1 = [NSFileHandle fileHandleForWritingAtPath:@"/Users/apple/Desktop/dir/abc.txt"];
        //(3)写入数据
        NSString *str =  @"好吃不过饺子,好玩不过赶紧";
        //转化
        NSData *data_1 = [str dataUsingEncoding:NSUTF8StringEncoding];
        //清空文件内容
        [fh_1 truncateFileAtOffset:0];
        [fh_1 seekToEndOfFile];  //文件读写位置设置到文件的末尾
        [fh_1 writeData:data_1];
        //(4)移动文件读写位置
        [fh_1 seekToFileOffset:12];
        [fh_1 writeData:data_1];
        
  
   //---------------- NSValue和NSNumber的使用------------------

//(1)基本数据类型与对象类型相互转化
        int a = 20;
        int c = 10;
        NSNumber *num_1 = [NSNumber numberWithInt:a];
        NSNumber *num_2 = [NSNumber numberWithInt:c];
        NSArray *array_2 = [[NSArray alloc]initWithObjects:num_1,num_2, nil];
        NSLog(@"%@-----%@",array_2[1],array_2[0]);
        NSLog(@"%i----%i",[array_2[1] intValue],[array_2[0] intValue]);
//(2)把一个结构体变量存储到NSArray中
        typedef struct Person{
            int age;
            float height;
        }person;
        person chenliang = {23,174};
        //作用: 把C的类型的数据转化为NSValue类型
        //参数1:数据的地址    参数2:数据的类型   @encode作用把类型转化为字符串
        NSValue *valve = [[NSValue alloc]initWithBytes:&chenliang objCType:@encode(person)];
        NSMutableArray *marray = [[NSMutableArray alloc]init];
        [marray addObject:valve];
        NSLog(@"%@",marray);
        //从NSValue中解析出存储的数据
        person newPerson;
        [valve getValue:&newPerson];
        NSLog(@"age = %d,height = %f",newPerson.age,newPerson.height);
        
    //---------------- NSDate的使用------------------
 
//(1)获取当前时间
        NSDate *date = [NSDate date];//时区概念 +8区
        NSLog(@"%@",date);
        
//(2)时间格式化输出
        NSDateFormatter *dataformatter = [[NSDateFormatter alloc]init];
        [dataformatter setDateFormat:@"yyyy/MM/dd hh:mm:ss S"];
        NSString *dataString = [dataformatter stringFromDate:date];
        NSLog(@"%@",dataString);
        
//(3)获取年,月,日
        //  设置需要的格式
        
//(4)计算某个操作所消耗的时间--计算时间差
        NSDate *beginDate = [NSDate date];
        long sum=0;
        for (long i=0; i<1000000000; i++) {
            sum = sum+i;
        }
        NSDate *endDate = [NSDate date];
        
        double interval = [endDate timeIntervalSinceDate:beginDate];
        NSLog(@"interval = %f",interval);
        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值