• 文件归档


    //
    //  main.m
    //  OC5-文件归档
    //
    //  Created by qianfeng on 15/6/23.
    //  Copyright (c) 2015年 qianfeng. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    //归档:把对象数据存储到文件的过程.
    //反归档:从文件中读取数据到对象中的过程.
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
    #if 0
            //用系统方法归档
            //NSKeyedArchiver
            NSMutableDictionary *mutdic =[NSMutableDictionary dictionaryWithObjectsAndKeys:@"one",@"1",@"two",@"2", nil];
            [mutdic setValue:[NSDate date] forKey:@"date"];
            [mutdic setValue:[NSNumber numberWithInt:123] forKey:@"num"];
            [mutdic setValue:[@"ios" dataUsingEncoding:NSUTF8StringEncoding] forKey:@"data"];
            bool ret =[NSKeyedArchiver archiveRootObject:mutdic toFile:@"/Users/qianfeng/Desktop/text/arch.text"];//文件不存在自动创建.
            if(ret)
            {
                NSLog(@"文件归档成功");
                
            }
            else{
                NSLog(@"文件归档失败");
            }
    //#else
            //反归档
            NSDictionary *dict =[NSKeyedUnarchiver unarchiveObjectWithFile:@"/Users/qianfeng/Desktop/text/arch.text"];
            if (dict) {
                  NSLog(@"%@",dict);
            }
            
            
    #endif
            
    #if 1
            //归档
            
            NSMutableDictionary *mutdic =[NSMutableDictionary dictionaryWithObjectsAndKeys:@"one",@"1",@"two",@"2", nil];
            [mutdic setValue:[NSDate date] forKey:@"date"];
            [mutdic setValue:[NSNumber numberWithInt:123] forKey:@"num"];
            [mutdic setValue:[@"ios" dataUsingEncoding:NSUTF8StringEncoding] forKey:@"data"];
            NSData *data =[NSKeyedArchiver archivedDataWithRootObject:mutdic];
            //data =[NSKeyedArchiver archivedDataWithRootObject:mutdic];
            BOOL ret =[data writeToFile:@"/Users/qianfeng/Desktop/text/data.text" atomically:YES];
            
            if(ret)
            {
                NSLog(@"文件归档成功");
                
            }
            else{
                NSLog(@"文件归档失败");
            }
            
    #else
          
            //反归档
            NSData *data =[NSData dataWithContentsOfFile:@"/Users/qianfeng/Desktop/text/data.text"];
            NSDictionary *dict =[NSKeyedUnarchiver unarchiveObjectWithData:data];
            if(dict)
            {
                NSLog(@"%@",dict);
            }
            
            
    #endif
            
    #if 0
            //手动归档
            //创建一个空的可变data对象
            NSMutableData *data =[NSMutableData data];//一定是可变的二进制对象(NSMutableData)
            NSKeyedArchiver *archiver =[[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
            NSArray *array =[NSArray arrayWithObjects:@"one",@"two",[NSNumber numberWithInt:123],[NSDate date],[@"ios" dataUsingEncoding:NSUTF8StringEncoding], nil];
            
            NSMutableDictionary *dict =[NSMutableDictionary dictionaryWithObjectsAndKeys:@"5",@"five",@"6",@"six",[NSNumber numberWithInt:123],@"num1",[NSNumber numberWithFloat:23.1],@"num2", nil];
            //对数组及字典进行编码
            [archiver encodeObject:array forKey:@"array"];
            [archiver encodeObject:dict forKey:@"dictionary"];
            
            //完成编码
            [archiver finishEncoding];
            
            //写入文件
           int ret=  [data writeToFile:@"/Users/qianfeng/Desktop/text/data.text" atomically:YES];
            if (ret) {
                NSLog(@"文件归档成功");
                
            }
            else{
                NSLog(@"文件归档失败");
            }
            
            
    //#else
            //解归档
            NSData *data =[NSData dataWithContentsOfFile:@"/Users/qianfeng/Desktop/text/data.text"];
            NSKeyedUnarchiver *unarchiver =[[NSKeyedUnarchiver alloc] initForReadingWithData:data];
            NSArray *array =[unarchiver decodeObjectForKey:@"array"];
            NSDictionary *dict =[unarchiver decodeObjectForKey:@"dictionary"];
            //完成解码
            [unarchiver finishDecoding];
            
            NSLog(@"array =%@",array);
            NSLog(@"----------------");
            NSLog(@"dict =%@",dict);
            
    #endif
        }
        return 0;
        
    }
  • 相关阅读:
    获取文件扩展名(后缀)
    文件字节大小显示成M,G和K
    mybatis在Mapper的xml文件中的转义字符的处理
    Java反射中method.isBridge() 桥接方法
    MyBatis框架的使用及源码分析(十三) ResultSetHandler
    MyBatis框架的使用及源码分析(十二) ParameterHandler
    MyBatis框架的使用及源码分析(十一) StatementHandler
    MyBatis框架的使用及源码分析(十) CacheExecutor,SimpleExecutor,BatchExecutor ,ReuseExecutor
    MyBatis框架的使用及源码分析(九) Executor
    MyBatis框架的使用及源码分析(八) MapperMethod
  • 原文地址:https://www.cnblogs.com/0515offer/p/4595165.html
Copyright © 2020-2023  润新知