1、简介
- 在文件系统中,文件和目录都是使用完整文件路径来唯一标识的。我们可以使用 NSString 和 NSURL 两种对象来描述文件路径。官方建议使用 NSURL 。
- NSURL 是用来表示 URL 地址的类,通过 URL 我们可以定位一个远程 web 服务器上的资源位置,也可以定位硬盘上的一个本地文件的路径。
- 对于 web 资源,往往结合 NSURLSession、NSURLConnection、NSURLDownload 等使用,对于本地资源,一般结合 NSFileManager、NSFileHandle、NSBundle 使用。
- NSURLComponents 只支持 iOS7.0 及以上的 API 类,它可以实现对 URL 各个部分的读写。NSURLComponents 对 URL 各个部分的内容都有两种格式的属性来表示:
原生格式 |
URL-Encoded |
scheme |
- |
host |
percentEncodedHost |
port |
- |
path |
percentEncodedPath |
query |
percentEncodedQuery |
fragment |
percentEncodedFragment |
user |
percentEncodedUser |
password |
percentEncodedPassword |
2、NSURL 结构:
protocol://hostname[:port]/path/[;parameters][?query]#fragment
protocol :协议
hostname :主机名
port :端口
path :路径
parameters :参数
query :查询
fragment :信息片段
http:// 超文本传输协议
https:// 超文本传输安全协议
ftp:// 文件传输协议
file:// 本地文件 URL
data:// 数据 URL
3、URL 的创建
NSURL *url1 = [NSURL URLWithString:@"https://swiftinaction.com/example"];
NSString *complexString = @"https://swiftinaction.com/中文字符串/example";
NSString *convertString = [complexString stringByAddingPercentEncodingWithAllowedCharacters:
[NSCharacterSet characterSetWithCharactersInString:@"`#%^{}\"[]|\\<> "]];
NSURL *url2 = [NSURL URLWithString:convertString];
NSURL *baseUrl = [NSURL URLWithString:@"https://swiftinaction.com"];
NSURL *fullUrl = [NSURL URLWithString:@"/example" relativeToURL:baseUrl];
NSURL *url3 = [fullUrl absoluteURL];
NSURL *url4 = [NSURL fileURLWithPath:@"/Users/JHQ0228/Desktop/test"];
NSURL *url5 = [NSURL fileURLWithPath:@"/Users/JHQ0228/Desktop/test" isDirectory: YES];
4、URL 的获取
NSURL *url1 = [NSURL URLWithString:@"http://JHQ:password@swiftinaction.com:8080/sayHello/toChinese.png; date=20160223?name=JHQ#atMorning"];
NSString *absoluteString = [url1 absoluteString];
NSString *scheneString = [url1 scheme];
NSString *hostString = [url1 host];
NSNumber *portString = [url1 port];
NSString *pathString = [url1 path];
NSString *parametersString = [url1 parameterString];
NSString *queryString = [url1 query];
NSString *fragmentString = [url1 fragment];
NSArray *pathComponents = [url1 pathComponents];
NSString *relativePath = [url1 relativePath];
NSString *lastPathComponent = [url1 lastPathComponent];
NSString *pathExtension = [url1 pathExtension];
NSString *user = [url1 user];
NSString *password = [url1 password];
5、URL 的判断
NSURL *fileUrl = [[NSBundle mainBundle] URLForResource:@"testFile" withExtension:@"txt"];
BOOL bl1 = [fileUrl checkResourceIsReachableAndReturnError:nil];
BOOL bl2 = [fileUrl isFileURL];
6、URL 的路径拼接
NSURL *url = [NSURL URLWithString:@"http://swiftinaction.com/sayHello"];
NSURL *appendUrl1 = [url URLByAppendingPathComponent:@"toJhq"];
NSURL *appendUrl2 = [url URLByAppendingPathComponent:@"toJhq" isDirectory: YES];
NSURL *appendUrl3 = [url URLByAppendingPathExtension:@"png"];
NSURL *deleteUrl1 = [appendUrl1 URLByDeletingLastPathComponent];
NSURL *deleteUrl2 = [appendUrl3 URLByDeletingPathExtension];
7、NSURLComponents
NSURLComponents *componentsUrl = [NSURLComponents componentsWithString:@"http://swiftinaction.com/sayHello"];
componentsUrl.scheme = @"https";
componentsUrl.host = @"swiftinaction.com.cn";
componentsUrl.port = @8080;
componentsUrl.path = @"/sayHello/toChinese/你好";
componentsUrl.query = @"name=JHQ";
componentsUrl.fragment = @"atMorning";
componentsUrl.user = @"JHQ";
componentsUrl.password = @"123456789";
NSURL *nsUrl = [componentsUrl URL];
NSString *componentsUrlString1 = [componentsUrl path];
NSString *componentsUrlString2 = [componentsUrl percentEncodedPath];
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· Windows 提权-UAC 绕过