004-文件管理与文件操作

第一部分:文件管理(文件管理类:NSFileManager -- 单例)

 1     // 获取文件管理器
 2     NSFileManager *fm = [NSFileManager defaultManager];
 3     
 4     // 1.获取文件的所有属性
 5     NSString *path2 = @"/Users/aplle/Desktop/test.txt";
 6     NSError *error2 = nil;
 7     NSDictionary *dic = [fm attributesOfItemAtPath:path2 error:&error2];
 8     if (error2 != nil) {
 9         NSLog(@"error2 = %@", error2);
10     } else {
11         NSLog(@"dic = %@", dic);
12     }
13     
14     // 2.浅度遍历文件路径下的所有文件(一级遍历:文件夹和文件)
15     NSString *path3 = @"/Users/aplle/Desktop";
16     NSError *error3 = nil;
17     NSArray *array1 = [fm contentsOfDirectoryAtPath:path3 error:&error3];
18     
19     // 3.深度遍历文件路径下的所有文件(逐级遍历:文件夹和文件)
20     NSString *path4 = @"/Users/aplle/Desktop/lidong";
21     NSError *error4 = nil;
22     NSArray *array2 = [fm subpathsOfDirectoryAtPath:path4 error:&error4];
23     
24     // 4.创建文件夹
25     NSString *path5 = @"/Users/aplle/Desktop/Frank";
26     NSError *error5 = nil;
27     // 参数:withIntermediateDirectories 是否补充创建文件夹
28     BOOL isCreateSucces = [fm createDirectoryAtPath:path5 withIntermediateDirectories:YES attributes:nil error:&error5];
29     if (isCreateSucces) {
30         NSLog(@"创建文件夹成功");
31     } else {
32         NSLog(@"error5 = %@", error5);
33     }
34     
35     // 5.移动目录(将Frank文件夹下的所有文件移动到newFrank文件夹里面)
36     // 如果不存在newFrank文件夹,系统会自动创建
37     NSString *fromPath1 = @"/Users/aplle/Desktop/Frank";
38     NSString *toPath1 = @"/Users/aplle/Desktop/newFrank";
39     NSError *error6 = nil;
40     BOOL isMoveSuccess = [fm moveItemAtPath:fromPath1 toPath:toPath1 error:&error6];
41     if (isMoveSuccess) {
42         NSLog(@"移动成功!");
43     } else {
44         NSLog(@"error6 = %@", error6);
45     }
46     
47     // 6.删除文件(删除newFrank整个文件夹)
48     NSString *path7 = @"/Users/aplle/Desktop/newFrank";
49     NSError *error7 = nil;
50     BOOL isRemoveSuccess = [fm removeItemAtPath:path7 error:&error7];
51     if (isRemoveSuccess) {
52         NSLog(@"删除成功!");
53     } else {
54         NSLog(@"error7 = %@", error7);
55     }
56     
57     // 7.拷贝文件(将Frank中的所有文件拷贝到newFrank文件夹中)
58     NSString *fromPath2 = @"/Users/aplle/Desktop/Frank";
59     NSString *toPath2 = @"/Users/aplle/Desktop/newFrank";
60     NSError *error8 = nil;
61     BOOL isCopySuccess = [fm copyItemAtPath:fromPath2 toPath:toPath2 error:&error8];
62     if (isCopySuccess) {
63         NSLog(@"拷贝成功!");
64     } else {
65         NSLog(@"error8 = %@", error8);
66     }

 

 

 第二部分:文件操作(文件句柄类:NSFileHandle)

一、文件打开方式  

  1.以只读方式打开  + (id)fileHandleForReadingAtPath:(NSString *)path;

  2.以只写方式打开  + (id)fileHandleForWritingAtPath:(NSString *)path;

  3.以读写方式打开  + (id)fileHandleForUpdatingAtPath:(NSString *)path;

 1     // 文件路径
 2     NSString *path = @"/Users/aplle/Desktop/Frank/test.txt";
 3     
 4     // 1.以只读方式打开文件
 5     NSFileHandle *handle1 = [NSFileHandle fileHandleForReadingAtPath:path];
 6     if (handle1 == nil) {
 7         NSLog(@"打开失败!");
 8     } else {
 9         NSLog(@"打开成功!");
10     }
11     
12     // 2.以只写方式打开文件
13     NSFileHandle *handle2 = [NSFileHandle fileHandleForWritingAtPath:path];
14     if (handle2 == nil) {
15         NSLog(@"打开失败!");
16     } else {
17         NSLog(@"打开成功!");
18     }
19     
20     // 3.以读写方式打开文件
21     NSFileHandle *handle3 = [NSFileHandle fileHandleForUpdatingAtPath:path];
22     if (handle3 == nil) {
23         NSLog(@"打开失败!");
24     } else {
25         NSLog(@"打开成功!");
26     }

  

二、读写文件

  读写文件最终都是NSData类型的二进制数据。

  1.读文件

    1) 读指定长度的数据                  - (NSData *)readDataOfLength:(NSUInteger)length;

    2)从当前偏移量读到文件尾       - (NSData *)readDataToEndOfFile;

    3)设置文件指针偏移量                 - (void)seekToFileOffset:(unsigned long long)offset;

    4)将文件偏移量定位到文件尾        - (unsigned long long)seekToEndOfFile;

 1     // 文件路径
 2     NSString *path = @"/Users/aplle/Desktop/Frank/test.txt";
 3     // 以只读方式打开文件
 4     NSFileHandle *handle = [NSFileHandle fileHandleForReadingAtPath:path];
 5     if (handle != nil) {
 6         // 1.读取指定长度的数据
 7         // 从当前文件指针开始往后读取指定长度的字节,读完以后文件指针就会在指定长度处
 8         NSData *data1 = [handle readDataOfLength:5];
 9         NSLog(@"data = %@", data1);
10         
11         // 2.从当前偏移量读到文件末尾
12         NSData *data2 = [handle readDataToEndOfFile];
13         
14         // 3.设置文件指针偏移量(文件指针回归起始位)
15         [handle seekToFileOffset:0];
16         
17         // 4.将文件指针移到文件末尾
18         [handle seekToEndOfFile];
19     }

  2.写文件

    1)句柄操作       - (void)writeData:(NSData *)data;

    2)字符串操作    - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error;

    3)NSData操作  - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;

 1     // 文件路径
 2     NSString *path = @"/Users/aplle/Desktop/Frank/test.txt";
 3     // 以读写方式打开
 4     NSFileHandle *handle = [NSFileHandle fileHandleForUpdatingAtPath:path];
 5     if (handle != nil) {
 6         // 1.逐个字节地写(写完一个字节,文件指针也就会跟着往后偏移一个字节)
 7         NSString *str1 = @"Welcome to beijing!";
 8         NSData *data1 = [str1 dataUsingEncoding:NSUTF8StringEncoding];
 9         [handle writeData:data1];
10         
11         // 2.以字符串写入(最终还是将字符串转化为了NSData)
12         NSString *str2 = @"Welcome to Wuhan!";
13         NSError *error = nil;
14         BOOL isWriteSuccess2 = [str2 writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error];
15         if (isWriteSuccess2) {
16             NSLog(@"写入文件成功!");
17         } else {
18             NSLog(@"写入文件失败!");
19         }
20         
21         // 3.以NSData类型写入
22         NSString *str3 = @"Welcome to Huanggang !";
23         NSData *data3 = [str3 dataUsingEncoding:NSUTF8StringEncoding];
24         BOOL isWriteSuccess3 = [data3 writeToFile:path atomically:YES];
25         if (isWriteSuccess3) {
26             NSLog(@"写入文件成功!");
27         } else {
28             NSLog(@"写入文件失败!");
29         }
30     }

 

三、NSData与NSString之间的转换

1     // 1.NSString ---> NSData
2     NSString *str1 = @"Welcome to Shenzhen !";
3     NSData *data = [str1 dataUsingEncoding:NSUTF8StringEncoding];
4     
5     // 2.NSString ---> NSData
6     NSString *str2 = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

 

posted @ 2016-01-14 17:05  Frank9098  阅读(176)  评论(0)    收藏  举报