iOS学习 plist读取和写入文件

干iOS开发时间,后经常用来plist文件。  那plist什么文件是它? 它的全称是:Property List,属性列表文件,它是一种用来存储串行化后的对象的文件。属性列表文件的扩展名为.plist 。因此通常被称为 plist文件。文件是xml格式的。

Plist文件通经常使用于储存用户设置。也能够用于存储捆绑的信息

我们创建一个项目来学习plist文件的读写。

1、创建项目Plistdemo

项目创建之后能够找到项目相应的plist文件。打开例如以下图所看到的:

在编辑器中显示相似与表格的形式,能够在plist上右键,用源代码方式打开,就能看到plist文件的xml格式了。

2、创建plist文件。


按command +N快捷键创建,或者File —> New —> New File,选择Mac OS X下的Property List

创建plist文件名称为plistdemo。

打开plistdemo文件,在空白出右键,右键选择Add row 加入数据,加入成功一条数据后,在这条数据上右键看到 value Type选择Dictionary。点加号加入这个Dictionary下的数据

加入完key之后在后面加入Value的值。加入手机号和年龄

创建完毕之后用source code查看到plist文件是这种:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>jack</key>
	<dict>
		<key>phone_num</key>
		<string>13801111111</string>
		<key>age</key>
		<string>22</string>
	</dict>
	<key>tom</key>
	<dict>
		<key>phone_num</key>
		<string>13901111111</string>
		<key>age</key>
		<string>36</string>
	</dict>
</dict>
</plist>

3、读取plist文件的数据


如今文件创建成功了,怎样读取呢。实现代码例如以下:

- (void)viewDidLoad
{
    [super viewDidLoad];
    //读取plist

    NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"plistdemo" ofType:@"plist"];
    NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
    NSLog(@"%@", data);//直接打印数据。
}

打印出来的结果:

PlistDemo[6822:f803] {
    jack =     {
        age = 22;
        "phone_num" = 13801111111;
    };
    tom =     {
        age = 36;
        "phone_num" = 13901111111;
    };
}

这样就把数据读取出来了。


4、创建和写入plist文件

在开发过程中,有时候须要把程序的一些配置保存下来。或者游戏数据等等。 这时候须要写入Plist数据。

写入的plist文件会生成在相应程序的沙盒文件夹里。

接着上面读取plist数据的代码,加入了写入数据的代码,

- (void)viewDidLoad
{
    [super viewDidLoad];
    //读取plist

    NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"plistdemo" ofType:@"plist"];
    NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
    NSLog(@"%@", data);

    //加入一项内容
    [data setObject:@"add some content" forKey:@"c_key"];

    //获取应用程序沙盒的Documents文件夹
    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
    NSString *plistPath1 = [paths objectAtIndex:0];

    //得到完整的文件名称
    NSString *filename=[plistPath1 stringByAppendingPathComponent:@"test.plist"];
   //输入写入
    [data writeToFile:filename atomically:YES];

    //那怎么证明我的数据写入了呢?读出来看看
    NSMutableDictionary *data1 = [[NSMutableDictionary alloc] initWithContentsOfFile:filename];
    NSLog(@"%@", data1);

	// Do any additional setup after loading the view, typically from a nib.
}


在获取到自己手工创建的plistdemo.plist数据后。在这些数据后面加了一项内容,证明输入写入了。

怎么证明加入的内容写入了呢?以下是打印结果:


代码地址:https://github.com/schelling/YcDemo/tree/master/PlistDemo

著作权声明:本文由http://blog.csdn.net/totogo2010/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!

时间: 2024-12-09 12:39:54

iOS学习 plist读取和写入文件的相关文章

Java 读取、写入文件——解决乱码问题

读取文件流时,经常会遇到乱码的现象,造成乱码的原因当然不可能是一个,这里主要介绍因为文件编码格式而导致的乱码的问题.首先,明确一点,文本文件与二进制文件的概念与差异. 文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码.ANSI编码等等.二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码.) 因此可以看出文本文件基本上是定长编码的(也有非定长的编码如UTF-8).而二进制文件可看成是变长编码的,因为是值编码嘛,多少

Redis 中文入库成功,读取数据写入文件乱码问题

最近需要用到redis ,但是在编码这个问题上,纠结了很久. 需求 : 每天一个进程将中文文件入库到redis中(不定时更新) ,另外几个进程读取redis中的信息 ,并处理数据结果. 使用的redis模块 : redis-py 问题 : 入库正常,读取数据成功,以GBK编码写入文件出现异常. 通过以下参数连接 redis : client  = redis.StrictRedis(host='localhost', port=6379, db=0, password="***") 从

读取和写入 文件 (NSFIleManger 与 NSFileHandle)

读取和写入 文件 //传递文件路径方法 -(id)initPath:(NSString *)srcPath targetPath:(NSString *)targetPath { self = [super init]; if (self != nil) { _srcPath = [srcPath copy]; _targetPath = [targetPath copy]; } return self; } //开始读文件 -(void)startRead { NSFileManager *f

【转】MFC中用CFile读取和写入文件2

原文网址:http://blog.sina.com.cn/s/blog_623a7fa40100hh1u.html CFile提供了一些常用的操作函数,如表1-2所示. 表1-2  CFile操作函数 函数 含义 Open 打开文件 Close 关闭文件 Flush 刷新待写的数据 Read 从当前位置读取数据 Write 向当前位置写入数据 GetLength 获取文件的大小 Seek 定位文件指针至指定位置 SeekToBegin 定位文件指针至文件头 SeekToEnd 定位文件指针至文件

C#读取和写入文件

一.读取文件 如果你要读取的文件内容不是很多, 可以使用 File.ReadAllText(FilePath) 或指定编码方式 File.ReadAllText(FilePath, Encoding)的方法. 它们都一次将文本内容全部读完,并返回一个包含全部文本内容的字符串 string str = File.ReadAllText(@"c:\temp\ascii.txt"); //也可以指定编码方式  string str2 = File.ReadAllText(@"c:\

C# Byte[]数组读取和写入文件

protected void ByteToString_Click(object sender, EventArgs e) { string content = this.txtContent.Text.ToString(); if (string.IsNullOrEmpty(content)) { return; } //string 转为byte数组 byte[] array = Encoding.UTF8.GetBytes(content); //将byte数组转为string strin

c#通过FileStream读取、写入文件

网上找过一些FileStream读取写入文件的代码,但是都有些小问题. 于是自己整理一下,以备不时之需.说明一下,以下代码我都运行过. 1.FileStream读取文件 // FileStream读取文件 public static string FileStreamReadFile(string filePath) { byte[] data = new byte[100]; char[] charData = new char[100]; FileStream file = new File

php中读取以及写入文件的方法总结

==>读取文件内容(方法一) $fileData = fread($fileStream,filesize($filePath)); 注意: 文本文件读取到网页上显示时,由于换行符不被解释,文本不换行显示, 解决办法:将\r\n替换为<br/>[str_replace('\r\n','<br/>',$fileData);] ==>读取文件内容(方法二) file_get_contents($filePath); 将整个文件读取到一个字符串(内部自动关闭文件流) ==&g

iOS学习笔记(十七)——文件操作(NSFileManager)

http://blog.csdn.net/xyz_lmn/article/details/8968213 iOS的沙盒机制,应用只能访问自己应用目录下的文件.ios不像Android,没有SD卡概念,不能直接访问图像.视频等内容.iOS应用产生的内容,如图像.文件.缓存内容等都必须存储在自己的沙盒内.默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp.Library包含Caches.Preferences目录.               上面的完整路径为:用户