数据处理文件读取---预习 1.30

一、沙盒机制

沙盒就是一个单独的,封闭的空间(好像后来不封闭,外面的应用程序也可以访问了),每一个应用程序都有一个这样的沙盒,用来存储相应的东西(东西:所有的非代码的东西,如图片,声音,属性列表,数据库,文本文件)(应用程序的沙盒,就是应用程序的目录)

每一个沙盒地下都有三个文件 Documents-文档 Library(Caches,PreFerences) tmp-临时文件

Document应用程序持久化的文件都是存储在这个文件夹下的

Library/Caches 存放缓存文件 存放体积大,不太重要文件,iTunes不会存储此文件下的内容

Library/Preferences 保存偏好设置 (不应该直接创建好设置文件)而是使用NSUserDefaults类来获得和设置应用程序的偏好(应该意思是不设置偏好,而是建立一个可以设置偏好的东西,然后让用户去设置偏好什么的)

tmp 存放零时文件,iTunes不会同步该目录,iPhone重启时(重启时会丢弃所以的tmp文件,但是当应用程序关闭时有可能会删除该应该程序下的tmp文件,该目录下的文件会被删除

获取文件的目录

方法:

NSString *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory(这里的参数换成其他类型的就可以获得其他类型的文件目录了), NSUserDomainMask, YES)[0]

tmp的文件目录获取有所不同

NSString *path = NSTemporaryDirctory();

二、简单对象的写入与读出

1、简单对象的读取和录入

字符串数据

[NSString stringWithContentsOfFile:<#(nonnull NSString *)#> encoding:<#(NSStringEncoding)#> error:<#(NSError * _Nullable __autoreleasing * _Nullable)#>]

读取类型开头+ withContectOfFile:<#(nonnull NSString *)#> encoding:<#(NSStringEncoding)#>

写入 writeToFile:atomically:encoding:error:

不研究NSdata

三、文件管理器

文件管理器NSFileManager(用实例说明)把文件的位置对换,还有很多方法,慢慢看

NSString *documentpath = [self getDocument];

NSString *pathForText = [documentpath stringByAppendingString:@"/path"];

NSString *contentPathForText = [pathForText stringByAppendingString:@"/text.tet"];

NSString *imageName = @"boxer_dog_72px_1165292_easyicon.net-2";

[imageName writeToFile:contentPathForText atomically:YES encoding:NSUTF8StringEncoding error:nil];

NSArray *cachesPaths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);

NSString *cachesPath = [cachesPaths objectAtIndex:0];

NSString *textDicPath = [cachesPath stringByAppendingString:@"/textDirectroy"];

NSFileManager *fileManager = [NSFileManager defaultManager];

[fileManager moveItemAtPath:contentPathForText toPath:textDicPath error:nil];

文件对接器NSFileHandle

这个类必须使用NSFileManager方法来创建文件,因此在使用是必须保证文件以及存在,否则返回的都是nil

四、复杂对象的对象与读取

对于自己定义的复杂的类,我们无法通过简单的writeTOFile:进行数据的持久化,只能通过归档然后再通过writeToFile写入文件

归档

首先,复杂对象所属的类要遵守<NSCoding>协议,然后实现协议中的两个方法

- (void)encodeWithCoder:(NSCoder *)aCoder ;序列化

-(void)initWithCoder:(NSCoder *)aDecoder;反序列化

//创建一个NSMutableData,用于保存归档后的对象

NSMutableData *data = [NSMutableData data];

//创建一个归档公工具

NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];

Person *person = [[Person alloc] init];

person.age = @"19";

person.name = @"kyrie";

//    存入归档

[archiver encodeObject:person forKey:@"p1"];

//    结束归档

[archiver finishEncoding];

//    沙盒路径

NSString *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];

NSString *PersonPath = [path stringByAppendingPathComponent:@"person"];

[data writeToFile:PersonPath atomically:YES];

//返归档

NSData *getdata = [NSData dataWithContentsOfFile:PersonPath];

//反归档工具

NSKeyedUnarchiver *unArchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:getdata];

Person *person2 = [unArchiver decodeObjectForKey:@"p1"];

[unArchiver finishDecoding];

NSLog(@"%@",person2.name);

时间: 2024-10-20 10:44:41

数据处理文件读取---预习 1.30的相关文章

Python文件读取和数据处理

一.python文件读取 1.基本操作 读取文件信息时要注意文件编码,文件编码有UFT-8.ASCII或UTF-16等. 不过在python中最为常用的是UTF-8,所以如果不特别说明就默认UTF-8编码. 读取文件可以使用 rt 模式下的 open()函数,示例如下: #以字符串的形式读取一个文件 with open('somefile.txt', 'rt') as f: data = f.read() with open('somefile.txt', 'rt') as f: for lin

Java文件读取大全

在此本人只搜集了四种文件读取的方法,分别是:按字节读取文件内容.按字符读取文件内容.按行读取文件内容.随机读取文件内容 以及给文件追加内容: 废话不多说,直接贴代码,希望能帮到一些人!如果有看不懂的可以加我QQ592652578,详聊. public class ReadFromFile {    1.按字节读取文件内容 /** * 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件. */ public static void readFileByBytes(String fi

审计 6 SSRF和任意文件读取

1 <?php 2 error_reporting(0); 3 session_start(); 4 header("Content-type:image/jpeg"); 5 echo file_get_contents($_SESSION['avatar']); 6 ?> 在第5行发现    读取的文件后,将文件进行了输出.  所以猜测此处可能存在SSRF 和  任意文件读取 搜索关键变量$_SESSION['avatar']  发现在登陆 和修改密码 读取了改变量,而上

java中的文件读取和文件写出:如何从一个文件中获取内容以及如何向一个文件中写入内容

1 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.File; 6 import java.io.FileInputStream; 7 import java.io.FileNotFoundException; 8 import java.io.FileOutputStream; 9 import java.io.IOException; 10 import java.io.

matlab文件读写处理实例(一)——不规则文件读取

数据: A) Title: Income DataB) Relevant Information:Marketing Database.Source: Impact Resources, Inc., Columbus, OH (1987). A total of N=9409 questionnaires containg 502 questions were filled out by shopping mall customers in the San Francisco Bay area.

数组冒泡排序,文件读取,数据库读取,string类型的int数组转换成int数组

排序方式(枚举) 1 public enum SortBy 2 { 3 Asc, 4 Desc 5 } 数组冒泡排序方法 1 public class SortEntity 2 { 3 public static int[] SortArray(int[] array,SortBy sortby) 4 { 5 int flag; 6 switch (sortby) 7 { 8 case SortBy.Asc: 9 for (int i = 0; i < array.Length - 1; i++

【Spring源码分析】.properties文件读取及占位符${...}替换源码解析

前言 我们在开发中常遇到一种场景,Bean里面有一些参数是比较固定的,这种时候通常会采用配置的方式,将这些参数配置在.properties文件中,然后在Bean实例化的时候通过Spring将这些.properties文件中配置的参数使用占位符"${}"替换的方式读入并设置到Bean的相应参数中. 这种做法最典型的就是JDBC的配置,本文就来研究一下.properties文件读取及占位符"${}"替换的源码,首先从代码入手,定义一个DataSource,模拟一下JDB

Java学习-017-EXCEL 文件读取实例源代码

众所周知,EXCEL 也是软件测试开发过程中,常用的数据文件导入导出时的类型文件之一,此文主要讲述如何通过 EXCEL 文件中 Sheet 的索引(index)或者 Sheet 名称获取文件中对应 Sheet 页中的数据.敬请各位小主参阅,若有不足之处,敬请大神指正,不胜感激! 不多言,小二上码咯... 通过 sheet_index 读取 EXCEL 数据源代码如下所示,敬请参阅! 1 /** 2 * @function 文件读取: EXCEL文件 3 * @description 通过EXCE

Java学习-019-Properties 文件读取实例源代码

在这几天的学习过程中,有开发的朋友告知我,每个编程语言基本都有相应的配置文件支持类,像 Python 编程语言中支持的 ini 文件及其对应的配置文件读取类 ConfigParse,通过这个类,用户可以方便的修改 ini 配置文件.在 Java 中对应的配置文件为 properties 格式的文本文件,其对应的内容格式为 “键=值” ,文本注释信息可以用 “#” 注释.同时 Java 语言中对应的类为 Properties(java.util.Properties),即为读取 propertie