OC文件操作(2)

NSFileManager 文件管理器完成文件的创建、移动、拷贝等管理操作

1.查询文件和目录

OC中查询路径下的目录主要分为浅度遍历和深度遍历。

浅度遍历

NSFileManager * manager = [NSFileManager defaultManager];//创建文件管理器,+方法

NSError * error = nil; //存数错误信息

NSArray * array = [manager contentsOfDirectoryAtPath:@"/tmp" error:&error];

//查询目录“/tmp”下的文件和目录,此函数返回值类型为NSArray *

这种查询方法,只看一级目录,只看所查目录,不看子目录

深度遍历

NSArray * array = [manager subpathsOfDirectoryAtPath: @"/tmp" error: &error];

这种方法查看所查目录和其所有子目录下的文件

2.创建目录

[manager createDirectoryAtPath:@"./1/2" withIntermediateDirectories:YES attributes:nil error:&error];

//第一个参数指目录创建的位置,这里”./”,为当前目录,指程序所在目录

//第二个参数,是否创建中间目录,意思为我们目的创建2目录,若1无的话,先创建1,再创建2

//第三个,指目录的属性,其权限等东西,我们可以设为nil暂时不考虑

3.创建文件

[manager createFileAtPath:@"./hello/world/1.txt" contents:nil attributes:nil];//创建一个名为1.txt的文件

//第二个参数,指以什么内容创建,nil为空文件

//第三个参数,文件的亚属性,我们这里不考虑,nil设置

//此函数返回值为BOOL型,YES创建成功,NO失败

4.拷贝目录或文件

[manager copyItemAtPath:@"./hello/world" toPath:@"./world" error:&error];

//拷贝目录或文件,拷贝目录时,会把目录下的文件和子目录都拷走

//第二个参数,必须写上拷过来之后的重命名

//第一个参数,必须是一个存在的目录或文件,第二个参数必须是一个不存在的目录或文件

//这程序表示,hello下的world拷贝到当前目录,改名为world

5.移动/剪切目录和文件

[manager moveItemAtPath:@"/tmp/dir1" toPath:@"./dir1" error:&error];//需注意的地方,与拷贝类似

6.删除目录和文件

[manager removeItemAtPath:@"./dir1" error:&error];//与移动类似,只是没有了目标位置

7.判断文件是否存在

[manager fileExistsAtPath:@"./1.txt"];//返回值为BOOL,YES为存在

NSFileHandle 文件句柄  文件的读写修改操作

对文件内容进行操作,我们需要一个新的类NSData来帮助我们。NSData可以创建一个用来存储数据的对象,进而我们对文件内容进行操作。

1.创建含有内容的文件

NSString * str = @”Hello World”;

NSData * data = [str dataUsingEncoding:NSUTF8StringEncoding];

NSFileManager * manager = [NSFileManager defaultManager];

[manager creatFileAtPath:@”./helloworld” contents:data attributes:nil];

//如果第二个参数不是nil,就会在创建文件的同时,将data内容写入文件

2.添加内容到已有的文件中

NSFileHandle * handle = [NSFileHandle fileHandleForWritingAtPath:@”./helloworld”];  //只写方式打开

[handle writeData:data];  //写入data数据

想要写入的数据,转为data,再写到文件中去。

handle = [NSFileHandle fileHandleForReading AtPath:@”./helloworld”];//只读方式打开

handle = [NSFileHandle fileHandleForUpdating AtPath:@”./helloworld”];//以读写的方式打开

这面的三种方式,均能写入文件内容,但是我们会发现,再次执行后,都会覆盖上次写入的内容。

3.追加内容到文件

与C语言文件管理不同的是,OC中没有追加的打开方式。OC中解决问题的方式,其实也很简单,就是将文件指针移到文件尾,然后再执行写入data操作,这样就能完成追加。

[handle seekToEndOfFile];//指针定位在文件尾,打开后执行这一步,再写入数据,可完成追加。

4.读取文件内容

读取文件内容有很多种方式,每种方式根据不同需要,可起到很好的效果。

(1)不打开文件,直接读取文件内容

NSData * data = [NSData dataWithContentsOfFile:@”./1.txt”];

NSData对象data将保存一个普通的C字符串,我们使用data输出时,使用%s,输出就能看到我们读出的内容。使用%@输出的话,我们得到的是一串ASCII码值。

NSLog(@”%@”,(char * )[data bytes]);//强转一下再打印。

(2)打开文件,再读取

NSFileHandle * handle = [NSFileHandle FileHandleForReadindAtPath:@”./1.txt”];

NSData * data = [handle readDataOfToEndOfFile];//读到文件尾,data接收内容

NSString * str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];//将data内容转入字符串

我们也可以实现文件的分段读取,避免文件过大,内存不够的情况

[handle readDataOfLength:6];//读取六个字符的内容

配合循环可以读取文件的全部内容。

[handle seekToFileOfSet:0];//指针定位在文件头

(2)直接读取文件内容到字符串

NSString * str = [NSString stringWithContentOfFile:@”./1.txt” encoding:NSUTF8StringEncoding error:&error];//以文件内容生成一字符串,读取全部内容

[str writeToFile:@”./2.txt” atomically:no encoding:NSUTF8String Encoding error:&error];//将字符串内容写入到文件中

本文出自 “CoderToDeveloper” 博客,请务必保留此出处http://rongchengfei.blog.51cto.com/6269699/1090236

时间: 2024-10-09 13:27:33

OC文件操作(2)的相关文章

OC文件操作(1)

1.文件的浅度遍历与深度遍历: //NSFileManager * fm = [[NSFileManager alloc]init];//创建文件管理器 //第一步创建一个文件管理器 NSError * error= nil; //显示路径下的内容,作用类似于ls -a指令 //返回值是把目录下的内容放到NSArray中 //浅度遍历 NSFileManager * fm = [NSFileManager defaultManager]; NSArray * array = [fm conten

OC文件操作

对象保存到文件的操作流程: 1.类需要实现<NSCoding>协议2.在main中进行操作 写入数据流程:       1)先定义 NSMutableData 对象  data       2)定义归档.压缩类 NSKeyedArchiver 并用 data进行初始化       3)encodeObject 编码对象,并指定 key       4)finishEncoding 完成编码       5)writeToFile 写入文件 NSMutableData *data = [NSMu

oc 文件操作,查看目录下所有文件包括子文件夹内包含的所有文件,循环遍历递归

FileManager.m #import "FileManager.h" @implementation FileManager + (void)showFiles:(NSString *)path;{ // 1.判断文件还是目录 NSFileManager * fileManger = [NSFileManager defaultManager]; BOOL isDir = NO; BOOL isExist = [fileManger fileExistsAtPath:path i

OC文件操作、获取文件属性

#import <Foundation/Foundation.h> //获取文件的属性 int main(int argc, const char * argv[]) { @autoreleasepool { //1.首先需要创建一个文件 //如果文件存在,会覆盖 NSString * str1 = @"good luck"; //path 是文件所在的路径 NSString * path = @"/Users/ms/Desktop/123/new.txt&quo

【非凡程序员】 OC第十七节课 文件操作(NSFileManager和NSFileHandle)

文件操作 #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) {    @autoreleasepool {        // insert code here...        NSLog(@"Hello, World!");                //----------- NSFileManager---------//                //实例化

IOS文件操作和自定义对象的归档(序列化)、反归档(反序列化)

IOS对文件操作包含文件的创建,读写,移动,删除等操作. 1.文件的创建: //设定文本框存储文件的位置 NSString *strFilePath=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]; //指定存储文件的文件名 NSString *fileName=[strFilePath stringByAppendingPathComponent:@

Python 文件操作

操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开文件 文件句柄 = open('文件路径', '模式') 打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作. 打开文件的模式有: r,只读模式(默认). w,只写模式.[不可读:不存在则创建:存在则删除内容:] a,追加模式.[可读: 不存在则创建:存在则只追加内容:] "+" 表示可以同时读写某个文件 r+,可读写文件.[可读:可写:可追加] w+,写读 a+,

python基础:python循环、三元运算、字典、文件操作

目录: python循环 三元运算 字符串 字典 文件操作基础 一.python编程 在面向过程式编程语言的执行流程中包含: 顺序执行 选择执行 循环执行 if是条件判断语句:if的执行流程属于选择执行:if语句有三种格式,如下: 在多分支的if表达式中,即使多个条件同时为真,也只会执行一个,首先测试为真: 选择执行 单分支的if语句 if CONDITION: 条件为真分支 双分支的if语句 if CONDITION 条件为真分支 else 条件不满足时分支 多分支的if语句 if CONDI

python文件操作

文件操作:os.mknod("test.txt")        创建空文件fp = open("test.txt",w)     直接打开一个文件,如果文件不存在则创建文件 关于open 模式: w     以写方式打开,a     以追加模式打开 (从 EOF 开始, 必要时创建新文件)r+     以读写模式打开w+     以读写模式打开 (参见 w )a+     以读写模式打开 (参见 a )rb     以二进制读模式打开wb     以二进制写模式打