黑马程序员——文件操作-NSData、NSValue

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1.NSFileManager文件或目录管理类(重点)
如何隐藏文件:
1.打开终端
2.常用命令:pwd  显示当前的目录
ls 显示当前目录下的文件和目录   cd dir 表示进入dir这个目录
ls -a 显示目录下的所以文件(包括隐藏文件) mv smallMovie .smallMovie隐藏文件
如何使用NSFileManager操作文件和目录,完成类似文件复制,移动这些操作
<1>创建NSFileManager的对象
       注意:一般情况下,使用defaultManager方法创建对象
       这个方法返回的是对象的单例???
       单例表示一个类的某个方法每次返回的对象都是同一个对象
       单例在以后的IOS开发者及其重要
       NSFileManager *fm=[NSFileManager defaultManager];
       NSFileManager *fm2=[NSFileManager defaultManager];
       NSLog(@"fm=%p fm2=%p",fm,fm2);
       输出:fm=0x100114470 fm2=0x100114470
<2>获取目录下的所以文件和目录
        NSString *path=@"/Users/apple/Desktop/movie";
        NSArray *arr=[fm contentsOfDirectoryAtPath:path error:nil];
        NSLog(@"%@",arr);
        补充:显示目录下的文件或者目录(包括子目录)
        arr=[fm subpathsOfDirectoryAtPath:path error:nil];
        NSLog(@"%@",arr);      
<3>创建目录,创建文件
        创建目录:abc目录
        第二个参数设置为yes表示创建中间目录
        path=@"/Users/apple/Desktop/movie/abc";
        BOOL b=[fm createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil      error:nil];
        NSLog(@"b=%d",b);
<4>复制文件
        test.txt 复制为:note.txt
        path=@"/Users/apple/Desktop/movie/test.txt";
        NSString *path2=@"/Users/apple/Desktop/movie/note.txt";
        [fm copyItemAtPath:path toPath:path2 error:nil];
<5>移动文件
        note。txt移动到dir中
        path=@"/Users/apple/Desktop/movie/note.txt";
        NSString *path2=@"/Users/apple/Desktop/movie/dir/note.txt";
        [fm moveItemAtPath:path toPath:path2 error:nil];
<6>删除文件
        path=@"/Users/apple/Desktop/movie/test.txt";
        [fm removeItemAtPath:path error:nil];
<7>文件是否存在
        path = @"/Users/apple/Desktop/movie/note.txt";
        b=[fm fileExistsAtPath:path];
        NSLog(@"%d",b);
2.NSFileHandle文件处理类(重点)
    从文件读数据,把数据写入到文件中
        文件操作步骤:
        1.打开文件
        2.文件中读取文件:
        3.保存文件(把修改的内容保存到文件中)
        4.关闭文件
         NSString *path=@"/Users/apple/Desktop/movie/test.txt";
      读取其中数据
 <1>打开文件
      
fileHandleForReadingAtPath读模式
       fileHandleForWritingAtPath:(NSString *)path;  写模式
       fileHandleForUpdatingAtPath:(NSString *)path; 可读可写
      首先以读模式打开文件
     文件刚打开的 时候读写位置在文件开始
     细节:文件打开失败返回空指针
        
        NSFileHandle *fh=[NSFileHandle fileHandleForReadingAtPath:path];
        //从文件中读取数据
        //[fh readDataOfLength:];
        if (fh != nil) {
            //
            [fh seekToFileOffset:3];

            NSData *data=[fh readDataOfLength:9];
            //NSData *data = [fh readDataToEndOfFile];
            //把NSData转化为字符串
            NSLog(@"data=%lu",data.length);
            NSString *str=[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
            //UTF8编码中 英文字母标签符号1个字节  西欧字母占2个字节  中文占三个字节
            NSLog(@"str=%@",str);
          
        }
 <2>把着行数据写入str.txt中
       
NSString *mystr=@"The bird fly in the sky,this a quiet spring";
        path=@"/Users/apple/Desktop/movie/str.txt";
        //以写的模式打开文件
        NSFileHandle *fh2=[NSFileHandle fileHandleForWritingAtPath:path];
        //NSLog(@"%@",fh2);
        if (fh2!=nil) {
            //写入之前先把字符串转化为NSData类型
            //str写入到文件中
            NSData *date=[mystr dataUsingEncoding:NSUTF8StringEncoding];
            [fh2 writeData:date];
            //NSLog(@"%@",)
3.NSValue
  NSValue可以把c语言的数据类型转化为oc的对象进而进行处理
  NSArray限制存储数据的类型oc的对象 不能放c的类型        -(id)initWithObject:
 
//定义结构体类型
        struct MyRect{
            double x;
            double y;
            double w;
            double h;
            //NSMumber其实是NSValue的子类
        };
        typedef struct MyRect MyRect;
        
        MyRect rect={10,10,100,190};
        //通过NSValue把结构体变量转化为NSValue对象
        //参数1:传入需要转到的数据的地址
        //参数2:传入转化的数据类型 MyRect
        NSValue *value=[[NSValue alloc] initWithBytes:&rect objCType:@encode(MyRect)];
        NSArray *arr=[[NSArray alloc] initWithObjects:value,nil];
        //重新解析数据
        
        NSValue *v=[arr objectAtIndex:0];
        MyRect newRect;
        [v getValue:&newRect];
        NSLog(@"%f %f %f %f",newRect.x,newRect.y,newRect.w,newRect.h);

4.NSDate时间日期管理类
    获取当前时间,计算某个操作消耗的时间
<1>获取当前时间
<2>事件自定义给事输出
<3>取得各个事件
<4>计算事件间隔
      
 // NSDate时间日期处理类的使用
        //<1>获取当前时间
        NSDate *date=[NSDate date];
        NSLog(@"%@",date);
        //2014-04-17 06:37:41 +0000  此为国际标准时间 中国的国家时间=国际标准时间+8小时
        //<2>事件自定义给事输出
        NSDateFormatter *dateFormatter=[[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss:S aa"];
        NSString *timeString=[dateFormatter stringFromDate:date];
        NSLog(@"%@",timeString);
        //<3>取得各个事件
        [dateFormatter setDateFormat:@"yyyy"];
        NSLog(@"%@",[dateFormatter stringFromDate:date]);
        //<4>计算事件间隔
        NSDate *beginDate=[NSDate date];
        int sum=0;
        for (int i=0; i<100000000; i++) {
            sum+=i;
        }
        NSDate *endDate=[NSDate date];
        
        NSTimeInterval ti=[endDate timeIntervalSinceDate:beginDate];
        NSLog(@"ti = %lf",ti);




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值