八天学会OC

第07天OC语言(09):字符串读写下

2017-07-22  本文已影响2人  liyuhong
须读:看完该文章你能做什么?

了解URL的基本概念
字符串的读写(url获取)

学习前:你必须会什么?(在这里我已经默认你具备C语言的基础了)

NSString的基本使用


一、本章笔记
 什么是URL
     URL 的全称 uniform Resoure Locator (统一资源定位符)
     URL 是互联网上标准资源的地址
     互联网上的每个资源 都有一个唯一的URL,他用于表示资源的位置
     根据一个URL就能找到唯一的一个资源
 
 URL的格式
     基本的URL 包含 协议、主机域名(服务器名称/IP地址)、路径
     举例: http:// baidu.com/image/content_lyh.png
     可以简单认为 : URL == 协议头: // 主机域名 / 路径
 
 常见 的URL协议头(URL类型)
     http://   https:// -- 超文本传输协议资源,网络资源
     ftp: //            -- 文件传输协议
     file://            -- 本地电脑的文件
 
 一、字符串的读取
    + (nullable instancetype)stringWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error;
    1.如果加载的资源 是本机上的资源, 那么URL中的主机地址可以省略
    虽然主机地址 可以省略,但是需要注意,文件路径最前面的/ 不能省略, 文件路径最前面的/代表根路径
    2.如果是通过NSURL 的fileURLWithPath方法创建URL,系统会自动给我们添加协议头(file://),所以字符串不需要写file://
        开发中一般情况下,如果是访问本机的资源,创建URL的时候,建议使用 fileURLWithPath 方法创建
      因为URL不支持中文,如果URL中包含中文,那么无法访问; 但是如果通过 fileURLWithPath 方法创建URL,那么URL中包含中文也可以进行访问,系统内部会自动对URL中包含的中文进行处理
        NSURL *url =[NSURL fileURLWithPath:path];
    3.如果URL包含中文,有非不通过 fileURLWithPath 创建, 也可以破
      如果想破 就必须在创建URL之前 对字符串的中文进行处理,进行百分号编码
        path = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

 二、字符串的写入
    - (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error;

二、code
main.m
#pragma mark 09-字符串读写下
#pragma mark 概念
/*
 什么是URL
     URL 的全称 uniform Resoure Locator (统一资源定位符)
     URL 是互联网上标准资源的地址
     互联网上的每个资源 都有一个唯一的URL,他用于表示资源的位置
     根据一个URL就能找到唯一的一个资源
 
 URL的格式
     基本的URL 包含 协议、主机域名(服务器名称/IP地址)、路径
     举例: http:// baidu.com/image/content_lyh.png
     可以简单认为 : URL == 协议头: // 主机域名 / 路径
 
 常见 的URL协议头(URL类型)
     http://   https:// -- 超文本传输协议资源,网络资源
     ftp: //            -- 文件传输协议
     file://            -- 本地电脑的文件
 
 一、字符串的读取
    + (nullable instancetype)stringWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error;
    1.如果加载的资源 是本机上的资源, 那么URL中的主机地址可以省略
    虽然主机地址 可以省略,但是需要注意,文件路径最前面的/ 不能省略, 文件路径最前面的/代表根路径
    2.如果是通过NSURL 的fileURLWithPath方法创建URL,系统会自动给我们添加协议头(file://),所以字符串不需要写file://
        开发中一般情况下,如果是访问本机的资源,创建URL的时候,建议使用 fileURLWithPath 方法创建
      因为URL不支持中文,如果URL中包含中文,那么无法访问; 但是如果通过 fileURLWithPath 方法创建URL,那么URL中包含中文也可以进行访问,系统内部会自动对URL中包含的中文进行处理
        NSURL *url =[NSURL fileURLWithPath:path];
    3.如果URL包含中文,有非不通过 fileURLWithPath 创建, 也可以破
      如果想破 就必须在创建URL之前 对字符串的中文进行处理,进行百分号编码
        path = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

 二、字符串的写入
    - (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error;

 
 */
#pragma mark - 代码
#import <Foundation/Foundation.h>
#pragma mark 类

#pragma mark - main函数
int main(int argc, const char * argv[])
{

#pragma 字符串的读取(通过URL)
    // 1.创建URL
    /*
    // 协议头 + 主机地址 + 文件路径
//    NSString *path = @"file://192.168.1.106/Users/liyuhong165/Desktop/lyh.txt";
//    NSString *path = @"http://www.baidu.com";
    // 注意: 如果加载的资源 是本机上的资源, 那么URL中的主机地址可以省略
    // 虽然主机地址 可以省略,但是需要注意,文件路径最前面的/ 不能省略, 文件路径最前面的/代表根路径
//    NSString *path = @"file:///Users/liyuhong165/Desktop/lyh.txt";
//    NSURL *url = [NSURL URLWithString:path];
    
    // /Users/liyuhong165/Desktop/0.OC语言/day07Code/lyh22.txt
    // /Users/liyuhong165/Desktop/lyh.txt
//    NSString *path = @"/Users/liyuhong165/Desktop/0.OC语言/day07Code/lyh22.txt";
    NSString *path = @"file:///Users/liyuhong165/Desktop/0.OC语言/day07C ode/lyh22.txt";
    // 注意 : 如果是通过NSURL 的fileURLWithPath方法创建URL,系统会自动给我们添加协 议头(file://),所以字符串不需要写file://
    // 注意 : 开发中一般情况下,如果是访问本机的资源,创建URL的时候,建议使用 fileURLWithPath 方法创建
    // 因为URL不支持中文,如果URL中包含中文,那么无法访问; 但是如果通过 fileURLWithPath 方法创建URL,那么URL中包含中文也可以进行访问,系统内部会自动对URL中包含的中文进行处理
    
    // 如果URL包含中文,有非不通过 fileURLWithPath 创建, 也可以破
    // 如果想破 就必须在创建URL之前 对字符串的中文进行处理,进行百分号编码
    NSLog(@"处理前 %@",path);
    path = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSLog(@"处理前 %@",path);
    NSURL *url = [NSURL fileURLWithPath:path];
    NSLog(@"url = %@",url);
    
    // 2.根据URL加载文件的字符串
    NSString *str = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"str = %@",str);
     */
    
#pragma 2.文件写入
    NSString *str = @"lyh";
    NSString *path = @"/Users/liyuhong165/Desktop/0.OC语言/day07Code/lyh33.txt";
//    path = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
//    NSURL *url = [NSURL URLWithString:path];
    NSURL *url =[NSURL fileURLWithPath:path];
    BOOL flag = [str writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"flag = %i",flag);
    // 注意点: 如果多次往同一个文件中写入内容,那么后一次的会覆盖前一次的
    NSString *str2 = @"lyh165-88";
   flag = [str2 writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil];
 
    return 0;
}

上一篇 下一篇

猜你喜欢

热点阅读