十七:字符串文件的读写

一、从文件中读取字符串和将字符串写入文件中:

(rtf文件无法加载)

 1 #import <Foundation/Foundation.h>
 2 int main(int argc, const char * argv[]) {
 3     @autoreleasepool {
 4         //从文件中读取字符串
 5        /* stringWithContentsOfFile:表示字符串的全路径(也称为绝对路径),带有file都表示全路径!
 6         * encoding:编码(每种字符串都有对应的编码)。一样用UTF-8,它基本包含所有语言的字符串。
 7         * error:如果读取错误,会将错误信息保存到error中,如果没有错误,就没有error。
 8         */
 9         NSString *path = @"/Users/ZW/Desktop/MVP1.rtf"; //不能读取rtf格式的文件!
10         NSError *error = nil;
11         NSString *str = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
12         //判断是否读取成功,若成功则打印str,若不成功,则打印error(存储错误信息)
13         if (error == nil) {
14             NSLog(@"str = %@",str);
15         }else{
16             //调用localizedDescription来直接查找到错误的真正原因
17             NSLog(@"error = %@",[error localizedDescription]);
18         }
19         //将字符串写入文件中
20         NSString *str1 = @"abcderf";
21         //atomically:如果传入YES,字符串写入文件的过程中如果没有写完,则不会生成文件
22         //           如果传入NO, 字符串写入文件的过程中如果没有写完,则会生成文件
23         BOOL flag =  [str1 writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];
24         NSLog(@"%d",flag);
25     }
26     return 0;
27 }

输出结果:

1 2016-05-07 09:08:22.094 字符串文件的读写[832:97786] str = abcderf
2 2016-05-07 09:08:22.096 字符串文件的读写[832:97786] 1
3 Program ended with exit code: 0

二、文件的读写

1、文件的读取

 1 //创建URL:协议头(file://) + 主机地址(192.168.112.234) + 文件路径(/Users/ZW/Desktop/MVP.rtf)
 2 //        NSString *path = @"file://192.168.112.234/Users/ZW/Desktop/MVP.rtf";
 3         //也可以直接添加网页
 4 //        NSString *path = @"http://www.baidu.com";
 5         // 注:如果加载的是本机资源,那么主机地址可以省略,注意file:后面是三个“/”,文件路径的“/”是不能省略,其代表的是根路径
 6          NSString *path1 = @"file:///Users/ZW/Desktop/MVP.rtf";
 7 //        加载资源的方式一:(url不支持中文,所以此方法不能识别中文)
 8         NSURL *url1 = [NSURL URLWithString:path1];
 9         //若想URLWithString识别中文,则需要进行百分号编码:
10         path1 = [path1 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];//已被淘汰
11         //根据URL加载文件中的字符串
12         NSString *str1 = [NSString stringWithContentsOfURL:url1 encoding:NSUTF8StringEncoding error:nil];
13     
14 //        加载资源的方式二:(会自动在开头生成file://)访问本地资源的时候建议使用此种方法,因为可以识别字符串中中文
15         NSString *path2 = @"/Users/ZW/Desktop/MVP.rtf";
16         NSURL *url2 = [NSURL fileURLWithPath:path2];

2、文件的写入(若出现中文则有两种方式,若没有中文则都可以)

 1 NSString *str3 = @"abcdef";     
 2 //        方法一:
 3         NSString *path3 = @"file:///Users/ZW/Desktop/未命名/MVP.rtf";
 4         path3 = [path3 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
 5         NSURL *url3 = [NSURL URLWithString:path3];
 6         //写入字符串
 7         [str3 writeToURL:url3 atomically:YES encoding:NSUTF8StringEncoding error:nil];
 8         
 9 //        方法二:
10         NSString *path4 = @"/Users/ZW/Desktop/未命名/MVP.rtf";
11         NSURL *url4 = [NSURL fileURLWithPath:path4];
12         
13         //写入字符串:若多次往同一个文件写入内容,则会下一次会覆盖上一次的文件
14         [str3 writeToURL:url4 atomically:YES encoding:NSUTF8StringEncoding error:nil];
原文地址:https://www.cnblogs.com/hissia/p/5467864.html