【发布时间】:2011-09-23 12:24:44
【问题描述】:
我无法保存文件名中带有斜线的文件。我下载文件,如果文件名称中有斜线,它不想保存。例如歌曲的全名:“H/F ArtistName - Song name.mp3”。是否可以保存名称中带有斜线的文件?或者如何正确替换斜线?
【问题讨论】:
标签: iphone objective-c ios ios4 filesystems
我无法保存文件名中带有斜线的文件。我下载文件,如果文件名称中有斜线,它不想保存。例如歌曲的全名:“H/F ArtistName - Song name.mp3”。是否可以保存名称中带有斜线的文件?或者如何正确替换斜线?
【问题讨论】:
标签: iphone objective-c ios ios4 filesystems
来自另一个帖子:
NSString *s = @"foo/bar:baz.foo";
NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"/:."];
s = [[s componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""];
NSLog(@"%@", s); // => foobarbazfoo
【讨论】:
/ 通常用作操作系统中文件或文件夹之间的分隔符。因此文件名不能包含斜杠,因为这会混淆文件夹名称中的 H。
最好的办法是用空格替换它或简单地删除它以给出:“HF ArtistName - Songname.mp3”
【讨论】:
解决方法:
Xcode 12.3、iOS 14
fileName.replacingOccurrences(of: "/", with: ":") // ??? just have a try...
完整的演示代码:
public extension Data {
func saveToTemporaryDirectory(fileName: String, completionHandler: @escaping (Result<URL, Error>) -> Void) {
var localURL = URL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true)
localURL.appendPathComponent(fileName.replacingOccurrences(of: "/", with: ":"))
do {
try self.write(to: localURL)
completionHandler(.success(localURL))
} catch {
completionHandler(.failure(error))
}
}
}
【讨论】: