zoukankan      html  css  js  c++  java
  • OC文件操作2

    1、对文件本身的操作 NSManager

    2、对文件内容的操作 NSHandle 文件句柄

    1 NSFileHandle * fh = [NSFileHandle fileHandleForReadingAtPath:@""]; //以只读方式打开文件生成文件句柄 

    内存:内部存储器;硬盘:外部存储设备。 从硬盘到内存(从文件到内存)叫做读,从内存到文件(硬盘)叫做写。

    1 //读取文件内容的两种方式 
    2 NSData * data = [fh readDataOfLength:3]; 
    3 //继续上面3个字节后,继续读取5个字节 
    4 data = [fh readDataOfLength:5];

    如果文件内容不是特别的多,可以用下面的方法直接读取全部内容

    1 //如果文件内容不是特别的多,可以用下面的方法直接读取全部内容 
    2 data = [fh readDataToEndOfFile];
    3 NSString * str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

    除了上面读的方法,还有写的方法。

    1 NSFileHandle * fh = [NSFileHandle fileHandleForWritingAtPath:@""]; //以只写方式打开文件生成句柄
    2 [fh writeData:[@"hello" dataUsingEncoding:NSUTF8StringEncoding]];//直接覆盖掉前面相应数量的字符

    类似C语言一样,直接将文件清空,然后将内容写入到文件里面。首先需要将文件字节截短至0

    1 [fh truncateFileAtOffset:0]; 
    2 //将文件内容截断至0字节 
    3 [fh writeData:[@"hello" dataUsingEncoding:NSUTF8StringEncoding]];

    修改文件,将新的内容添加至已有内容的末尾。

    1 [fh seekToEndOfFile]; //将读写指针设在文件的尾端
    2 [fh writeData:[@"XXX" dataUsingEncoding:NSUTF8StringEncoding]];

    3、归档

    归档:把平时使用的变量或者对象以一定的格式写入文件中进行存储,等到需要的时候直接读取出来就能还原成原对象的格式。

     1 #define PATH @"/Users/liyang/Desktop/Test/file.plist"
     2 
     3 NSDictionary * dict = [[NSDictionary alloc] initWithObjectsAndKeys:@"one",@"1",@"two",@"2",@"three",@"3",nil]; 
     4 [dict writeToFile:PATH atomically:YES];
     5 
     6 NSDictionary * dict = [[NSDictionary alloc] initWithContentsOfFile:PATH];
     7 [NSLog @"%@",dict];
     8 
     9 NSArray * array = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",nil]; 
    10 [array writeToFile:PATH atomically:YES];

    如果处理的数据较大的时候,需要一个辅助的类似NSKededArchieve。

    1 NSDictionary * dict = [[NSDictionary alloc] initWithObjectsAndKeys:@"one",@"1",@"two",@"2",@"three",@"3",nil]; 
    2 NSArray * array = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",nil]; 
    3 NSMutableData * data = [[NSMutableData alloc] init]; 
    4 NSKeyedArchiver * archiver = [[NSKeyedArchiver alloc] initForWritingWithMudatableData:data]; 
    5 [archiver encodeObject:array forKey:@"array"]; 
    6 [archiver encodeObject:dict forKey:@"dict"];
    7 [archiver finishEncoding]; 
    8 [data writeToFile:PATH atomically:YES];

    归档后的内容看上去都是乱码,可以用反归档对象NSKeyedUnarchiver获取plist文件里面的内容

    1 //获取plist的内容
    2 NSData * data = [[NSData alloc] initWithContentsOfFile:PATH];
    3 NSKeyedUnarchiver * unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
    4 NSArray * array = [unarchiver decodeObjectForKey:@"array"]; 
    5 NSLog(@"%@",array);


     

  • 相关阅读:
    从零开始设计一套指令集及其虚拟机
    一种高效整数开平方算法:逐比特确认法
    C 可变参数函数的本质
    C 基础数据类型 性能测试
    用C在GBA上写光线追踪(0)配置开发编译环境
    用C#写小工具:将圆柱面贴图映射到半球贴图
    Linux 硬盘UUID相同处理方法
    ELK6.x_Kafka 安装配置文档
    Nagios4.x安装配置总结
    Cacti-0.8.8b详细安装及配置步骤
  • 原文地址:https://www.cnblogs.com/GISerYang/p/3381434.html
Copyright © 2011-2022 走看看