• 数据的存储-NSKeyedArchiver和write to file介绍


    数据的存储-NSKeyedArchiver和write to file介绍

    首先介绍各个文件的作用-->讲解文件位置的查找方法-->介绍数据存储的方式:1.使用归档方式存储数据 2.writetofile写入方法

    iphone沙盒下的目录中存放的是什么信息?

    有ios程序显示的路径,我们将找到ios的沙盒位置,里面存在一下三个目录


    Documents:将所有的应用程序数据文件写入到这个目录下。这个目录用于存储用户数据或其他应该定期备份的信息。

    Library:这个目录下面有两个子目录,Caches和Preferences。

    Caches:用于存放应用程序专用的支持文件,保存应用程序首次启动过程中需要的信息。

    Preferences:保存应用程序的偏好设置文件。你不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好设置。

    tem:这个目录用于存放临时文件,保存应用程序再次启动过程中不需要的信息。


    获取文件路径的方法:

    我们可以通过代码来获取相关文件的位置:
    //沙盒文件的位置
        NSHomeDirectory()
    //    CachesDirectory位置
        [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]
    //    DocumentDirectory位置
        [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]
    //    tmp文件的位置
        NSTemporaryDirectory()
    //    PreferencePanesDirectory文件的位置
        [NSSearchPathForDirectoriesInDomains(NSPreferencePanesDirectory, NSUserDomainMask, YES) lastObject]
    //      将路径用/分开
        NSString *path = NSHomeDirectory();
        NSArray *pathSep = [path componentsSeparatedByString:@"/"];
     

    文件的存储方式:

    据我了解文件的存储方式有一下几种方式。1.使用NSKeyedArchiver方法的归档方式。  2.使用write to file 方法写入文件。 3.使用NSUserDefault方法来存储类
     
    下面对这些方式进行详细介绍:

    使用NSKeyedArchiver方法的归档方式:

    NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
        filePath = [filePath stringByAppendingPathComponent:@"data.zip"];
        [NSKeyedArchiver archiveRootObject:[@"dalsfjldkjflas" dataUsingEncoding:NSUTF8StringEncoding] toFile:filePath];
        
        NSData *fileData = [[NSData alloc] init];
        fileData = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
        NSString *fileString = [[NSString alloc] initWithData:fileData encoding:NSUTF8StringEncoding];
        NSLog(@"fileStirng = %@", fileString);

    关键方法:

    NSKeyedArchiver类的归档存储方法:archiveRootObject:toFile:

    NSKeyedUnarchiver类的解压方法:unarchiveObjectWithFile

    使用write to file 方法写入文件:

    //    将数据保存到文件
        NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
        filePath = [filePath stringByAppendingPathComponent:@"stirng1.zip"];
        NSLog(@"%@", filePath);
        NSString *string = @"write to the file method";
        [string writeToFile:filePath atomically:YES encoding:NSStringEncodingConversionExternalRepresentation error:nil];
        
    //    从文件中提取相应的数据
        NSString *stringFile = [[NSString alloc] initWithContentsOfFile:filePath encoding:NSStringEncodingConversionExternalRepresentation error:nil];
        NSLog(@"%@", stringFile);

    在一般的数据类型例如:NSArray,NSMutableArray,NSDictionary,NSMutableDictionary,NSData,NSMutableData,NSString,NSMutableString,NSNumber,NSDate中,都有一个方法为writetofile。我们可以使用这个方法将数据存放到起来。
    关键存放方法:writeToFile
    关键提取方法:initwithContentOfFile


  • 相关阅读:
    c# 三元运算符 表达式赋值的时候 我老容易写错 备注下
    wpf 图片操作类 ImageBrush BitmapImage
    WPF 结合 微软的手写板 进行输入
    c# 经纬度距离计算
    c# 通用类扩展方法 备注
    Android SDK Manager无法更新的解决(转帖)
    GridControl相关设置
    SDK Manager.exe运行一闪而过
    “LC.exe”已退出 或者 设计器提示控件为声明
    建立管理员帐户
  • 原文地址:https://www.cnblogs.com/AbeDay/p/5026945.html
Copyright © 2020-2023  润新知