文件操作

简介: 来源:http://my.oschina.net/outatu/blog/125589 1.文件的浅度遍历与深度遍历   01 //NSFileManager * fm = [[NSFileManager alloc]init];//创建文件管理器 02 ...

 

来源:http://my.oschina.net/outatu/blog/125589

1.文件的浅度遍历与深度遍历

 

01 //NSFileManager * fm = [[NSFileManager alloc]init];//创建文件管理器
02 //第一步创建一个文件管理器
03 NSError * error= nil;
04 //显示路径下的内容,作用类似于ls -a指令
05 //返回值是把目录下的内容放到NSArray中
06 //浅度遍历
07 NSFileManager * fm = [NSFileManager defaultManager];
08 NSArray * array = [fm contentsOfDirectoryAtPath:@"/Users/aaaaa/Desktop"
09                                           error:&error];
10 //成功返回nil错误返回失败信息
11 if(error)
12 {
13    NSLog(@"Error=%@",error);
14    return -1;//代表函数返回(结束函数)
15    //exit(1);//结束当前进程
16 }
17 else
18 {
19    NSLog(@"array=%@",array);
20 }
21          
22 //深度遍历
23 //可以显示子目录的内容
24 NSArray * array1 = [fm subpathsOfDirectoryAtPath:@"/Users/aaaaa/Desktop"
25                                            error:&error];
26 if(error)
27 {
28     NSLog(@"Error=%@",error);
29 }
30 else
31 {
32     NSLog(@"array1=%@",array1);
33 }

2.创建目录

 

01 NSFileManager * fm = [NSFileManager defaultManager];
02 NSError * error = nil;
03 //当前路径指的是可执行程序的路径而不是代码的路径
04 //创建目录  返回值:创建成功返回YES 失败返回NO
05 BOOL ret = [fm createDirectoryAtPath:@"./hello2/world"  //创建目录的路径
06          withIntermediateDirectories:YES//路径不存在是否创建目录 YES代表创建(会把不存在的目录也创建) NO代表不创建
07                           attributes:nil    //文件属性(权限),通常写nil代表默认权限
08                                error:&error];
09 if(ret)
10 {
11    NSLog(@"success!");
12 }
13 else
14 {
15     NSLog(@"error = %@",error);
16 }

3.创建文件

 

1 NSFileManager * fm = [NSFileManager defaultManager];
2 //创建文件
3 BOOL ret = [fm createFileAtPath:@"./1.txt" //路径以及文件名
4                        contents:nil //要创建的文件的内容 nil代表空文件 若文件以及存在会覆盖该文件
5                      attributes:nil];
6         [fm fileExistsAtPath:@"./1.txt"]//判断文件时候存在

4.拷贝文件/目录

 

1 NSFileManager * fm = [NSFileManager defaultManager];
2 NSError * error = nil;
3 //拷贝文件/目录
4 //第二个参数必须要写全文件或者目录名字
5 BOOL ret = [fm copyItemAtPath:@"/Users/aaaaa/Desktop/string.c"//要复制的文件的路径
6                        toPath:@"./1.txt" //目的文件(文件名不要加空格)若以及存在会返回error
7                         error:&error];

5.移动(重命名)文件/目录

 

1 //重命名(移动)文件或目录
2 //重命名:就是修改文件路径
3 //如果文件/目录存在 移动失败
4 ret = [fm moveItemAtPath:@"/Users/aaaaa/Desktop/"
5                   toPath:@"./1/1" //参数要写全称
6                    error:&error];

6.删除文件/目录

 

1 //删除文件/目录
2 //谨慎使用(会直接删除 不会丢到废纸篓中)
3 ret = [fm removeItemAtPath:@"./1.txt"
4                      error:&error];

7.NSData与字符串

 

1 NSString * str = @"hello world";
2 //将OC字符串转换成NSData类型
3 //NSData 文件缓冲区
4 NSData * data = [str dataUsingEncoding:NSUTF8StringEncoding];
5          
6 //将NSData类型转换成NSString类型
7 NSString * str2 = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];

8.文件读写操作

 

01 //文件读写操作
02 //第一步打开文件
03 //FILE * fp = fopen("./1.txt","w");文件指针
04 //文件句柄
05 //以只读方式打开
06 NSFileHandle * fh = [NSFileHandle fileHandleForReadingAtPath:@"/Users/aaaaa/Desktop/string.c"];
07          
08 //以只写方式打开
09 fh = [NSFileHandle fileHandleForWritingAtPath:@"/Users/aaaaa/Desktop/string.c"];
10 //以读写方式打开
11 fh = [NSFileHandle fileHandleForUpdatingAtPath:@"/Users/aaaaa/Desktop/string.c"];
12  
13 //OC的打开函数都会把偏移量定位在未见首
14 //若想在文件尾进行操作,可将文件偏移量定位到文件尾
15 [fh seekToEndOfFile];//定位到文件尾
16      
17 NSData * data1 = [fh readDataOfLength:10];//读取指定个数字节
18 NSData * data2 = [fh readDataToEndOfFile];//从当前偏移量读到文件尾
19 [fh seekToFileOffset:10];//把文件偏移量定位到10字节

9.向文件中写数据

 

1 NSFileHandle * fh2 = [NSFileHandle fileHandleForUpdatingAtPath:@"./1.txt"];
2 NSString * str = @"hello world";
3 NSData * data = [str dataUsingEncoding:NSUTF8StringEncoding];
4 //写数据必须要转化为NSData
5 [fh2 writeData:data];

10.获取文件长度

1 //通过文件管理器获取文件属性然后通过字典获取文件长度
2 NSFileManager * fm = [NSFileManager defaultManager];
3 NSDictionary * dict = [fm attributesOfItemAtPath:@"/Users/aaaaa/Desktop/string.c"                                              error:&error];
4 //方法一:
5 NSLog(@"size = %lld",[dict fileSize]);
6 //方法二:
7 NSLog(@"%@",[dict objectForKey:NSFileSize]);

img_e00999465d1c2c1b02df587a3ec9c13d.jpg
微信公众号: 猿人谷
如果您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】
如果您希望与我交流互动,欢迎关注微信公众号
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

目录
相关文章
|
6月前
|
移动开发 Linux 程序员
c++文件操作,超详细
c++文件操作,超详细
102 0
|
存储 C语言 Windows
文件操作(上)
文件操作(上)
51 0
|
5月前
|
存储 C++
C++文件操作
C++文件操作
|
6月前
|
C语言
文件操作(2)
文件操作(2)
43 3
|
程序员 C语言 Windows
【文件操作】
【文件操作】
45 0
|
6月前
|
存储 程序员 C语言
文件操作详解
文件操作详解
60 0
|
存储 编译器 数据库
文件操作介绍(上)
文件操作介绍(上)
52 0
|
C#
使用C#进行文件操作
在许多应用程序中,文件操作是常见的任务之一。无论是读取文件内容、写入数据,还是创建、移动和删除文件,C# 编程语言都提供了强大且易于使用的文件操作功能。本篇博客将介绍如何使用C#来进行基本的文件操作。
67 0
|
存储 编译器 Windows
【C】文件操作详解
什么是文件 磁盘上的文件是文件。 但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件
|
存储 编译器 程序员
文件操作(详解)
文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件, 或者输出内容的文件。
125 0
文件操作(详解)