第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;
}