一、从文件中读取字符串和将字符串写入文件中:
(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];