截取NSURL的路径
NSURL的path属性,该属性可直接提取url中域名后面的路径,但有时候取的路径和文件名不正确。
举例1:(正常获取)
NSString *urlStr = @"https://mvvido5.meituta.com/56ea0e90b2653.mp4";
NSURL *url = [NSURL URLWithString:urlStr];
NSLog(@"%@",url.path);
结果:/56ea0e90b2653.mp4
举例2:(异常情况)
下面是异常情况,即最后一个path的/后面带有非字母非数字的字符,则会忽略后面的路径
urlStr = @"http://v11-tt.ixigua.com/776216c056/5c8dcaf0/video/m/22050ab42a/?rc=M25mZ.mp4";
url = [NSURL URLWithString:urlStr];
NSLog(@"%@",url.path);
结果:/776216c056/5c8dcaf0/video/m/22050ab42a
没有包含"?rc=M25mZ.mp4"这部分,就是因为前面的?问题。所以这种方式获取路径不保险。
截取文件名
常规做法,直接取得url的lastPathComponent即可
NSString *urlStr = @"https://mvvido5.meituta.com/56ea0e90b2653.mp4";
NSURL *url = [NSURL URLWithString:urlStr];
[url lastPathComponent];
但遇到url的路径最后一个‘ / ’后带有非字母非数字时,这个方法就不灵了。所以使用截取字符的办法。
+ (NSString *)fileNameWithURL:(NSURL *)url {
//使用截取的方法获取url的文件名
NSString *path = url.absoluteString;
NSRange range = [path rangeOfString:@"/" options:(NSBackwardsSearch)];
if( range.location != NSNotFound ){
//以下方法会包含起始索引的字符,所以+1
return [path substringFromIndex:range.location+1];
}
return @"";
}
[docDir stringByAppendingPathComponent:pathSuffix]; 若pathSuffix 最后带有/ ,结果上不会展示出来