• 十七:字符串文件的读写


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

    (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];
  • 相关阅读:
    PHP关于VC11,VC9,VC6以及Thread Safe和Non Thread Safe版本选择的问题
    团队展示
    测试与优化:设计模式的应用和初次尝试多线程
    结对编程,三年级混合运算
    一个大气又可爱的标题
    随笔
    C#操作word类文件
    TypeError: Object of type 'int32' is not JSON serializable ——已解决
    Error: UserWarning: Ignoring URL... 已解决
    tensorflow(二)----线程队列与io操作
  • 原文地址:https://www.cnblogs.com/hissia/p/5467864.html
Copyright © 2020-2023  润新知