您的位置:首页 > 移动开发 > Objective-C

Object-C文件操作

2016-02-26 20:05 309 查看
1.文件的浅度遍历与深度遍历

//NSFileManager * fm = [[NSFileManager alloc]init];//创建文件管理器

//第一步创建一个文件管理器

NSError * error= nil;

//显示路径下的内容,作用类似于ls -a指令

//返回值是把目录下的内容放到NSArray中

//浅度遍历

NSFileManager * fm = [NSFileManager defaultManager];

NSArray * array = [fm contentsOfDirectoryAtPath:@"/Users/aaaaa/Desktop"

error:&error];

//成功返回nil

错误返回失败信息

if(error)

{

NSLog(@"Error=%@",error);

return -1;//代表函数返回(结束函数)

//exit(1);//结束当前进程

}

else

{

NSLog(@"array=%@",array);

}

//深度遍历

//可以显示子目录的内容

NSArray * array1 = [fm subpathsOfDirectoryAtPath:@"/Users/aaaaa/Desktop"

error:&error];

if(error)

{

NSLog(@"Error=%@",error);

}

else

{

NSLog(@"array1=%@",array1);

}

2.创建目录
NSFileManager * fm = [NSFileManager defaultManager];

NSError * error = nil;

//当前路径指的是可执行程序的路径而不是代码的路径

//创建目录
返回值:创建成功返回YES
失败返回NO

BOOL ret = [fm createDirectoryAtPath:@"./hello2/world"
//创建目录的路径

withIntermediateDirectories:YES//路径不存在是否创建目录 YES代表创建(会把不存在的目录也创建)
NO代表不创建

attributes:nil //文件属性(权限),通常写nil代表默认权限

error:&error];

if(ret)

{

NSLog(@"success!");

}

else

{

NSLog(@"error = %@",error);

}
3.创建文件
NSFileManager * fm = [NSFileManager defaultManager];

//创建文件

BOOL ret = [fm createFileAtPath:@"./1.txt"
//路径以及文件名

contents:nil
//要创建的文件的内容 nil代表空文件
若文件以及存在会覆盖该文件

attributes:nil];

[fm fileExistsAtPath:@"./1.txt"]//判断文件时候存在
4.拷贝文件/目录
//重命名(移动)文件或目录

//重命名:就是修改文件路径

//如果文件/目录存在
移动失败

ret = [fm moveItemAtPath:@"/Users/aaaaa/Desktop/"

toPath:@"./1/1"
//参数要写全称

error:&error];
5.移动(重命名)文件/目录
1

2

3

4

5

6
//重命名(移动)文件或目录

//重命名:就是修改文件路径

//如果文件/目录存在
移动失败

ret = [fm moveItemAtPath:@"/Users/aaaaa/Desktop/"

toPath:@"./1/1"
//参数要写全称

error:&error];
6.删除文件/目录
//删除文件/目录

//谨慎使用(会直接删除
不会丢到废纸篓中)

ret = [fm removeItemAtPath:@"./1.txt"

error:&error];
7.NSData与字符串
NSString * str = @"hello world";

//将OC字符串转换成NSData类型

//NSData 文件缓冲区

NSData * data = [str dataUsingEncoding:NSUTF8StringEncoding];

//将NSData类型转换成NSString类型

NSString * str2 = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
8.文件读写操作
//文件读写操作

//第一步打开文件

//FILE * fp = fopen("./1.txt","w");文件指针

//文件句柄

//以只读方式打开

NSFileHandle * fh = [NSFileHandle fileHandleForReadingAtPath:@"/Users/aaaaa/Desktop/string.c"];

//以只写方式打开

fh = [NSFileHandle fileHandleForWritingAtPath:@"/Users/aaaaa/Desktop/string.c"];

//以读写方式打开

fh = [NSFileHandle fileHandleForUpdatingAtPath:@"/Users/aaaaa/Desktop/string.c"];

//OC的打开函数都会把偏移量定位在未见首

//若想在文件尾进行操作,可将文件偏移量定位到文件尾

[fh seekToEndOfFile];//定位到文件尾

NSData * data1 = [fh readDataOfLength:10];//读取指定个数字节

NSData * data2 = [fh readDataToEndOfFile];//从当前偏移量读到文件尾

[fh seekToFileOffset:10];//把文件偏移量定位到10字节
9.向文件中写数据
NSFileHandle * fh2 = [NSFileHandle fileHandleForUpdatingAtPath:@"./1.txt"];

NSString * str = @"hello world";

NSData * data = [str dataUsingEncoding:NSUTF8StringEncoding];

//写数据必须要转化为NSData

[fh2 writeData:data];
10.获取文件长度
//通过文件管理器获取文件属性然后通过字典获取文件长度

NSFileManager * fm = [NSFileManager defaultManager];

NSDictionary * dict = [fm attributesOfItemAtPath:@"/Users/aaaaa/Desktop/string.c" error:&error];

//方法一:

NSLog(@"size = %lld",[dict fileSize]);

//方法二:

NSLog(@"%@",[dict objectForKey:NSFileSize]);
.OC的数组成员是任意的对象指针 与C中的链表结构类似(以nil结尾) 一切的数组操作不能越界
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: