在文件名中保存带有斜线的文件-objective-c

Posted

技术标签:

【中文标题】在文件名中保存带有斜线的文件-objective-c【英文标题】:Saving files with slash in file name - objective-c 【发布时间】:2011-09-23 12:24:44 【问题描述】:

我无法保存文件名中带有斜线的文件。我下载文件,如果文件名称中有斜线,它不想保存。例如歌曲的全名:“H/F ArtistName - Song name.mp3”。是否可以保存名称中带有斜线的文件?或者如何正确替换斜线?

【问题讨论】:

【参考方案1】:

来自另一个帖子:

    NSString *s = @"foo/bar:baz.foo";
NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"/:."];
s = [[s componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""];
NSLog(@"%@", s); // => foobarbazfoo

or just look here

【讨论】:

【参考方案2】:

/ 通常用作操作系统中文件或文件夹之间的分隔符。因此文件名不能包含斜杠,因为这会混淆文件夹名称中的 H。

最好的办法是用空格替换它或简单地删除它以给出:“HF ArtistName - Songname.mp3”

【讨论】:

尝试在 MacOSX 上的文件名中输入斜杠。在文件组件被正确转义之前,使用什么作为分隔符并不重要。 各种 Mac/Apple 文件系统不使用斜杠 ("/") 作为分隔符,它们使用冒号 (":")。所以文件或目录可以包含斜杠但不能包含冒号。在各种接口(例如终端、shell)中,斜杠(POSIX 目录分隔符)被使用,但可以转义。【参考方案3】:

解决方法:

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))
        

    


【讨论】:

以上是关于在文件名中保存带有斜线的文件-objective-c的主要内容,如果未能解决你的问题,请参考以下文章

关于Matlab小波工具箱打开.mat文件为一条递增斜线问题的解决办法

关于Matlab小波工具箱打开.mat文件为一条递增斜线问题的解决办法

关于Matlab小波工具箱打开.mat文件为一条递增斜线问题的解决办法

关于Matlab小波工具箱打开.mat文件为一条递增斜线问题的解决办法

如何在 Objective-C 的 NSDocument 目录中保存和获取多个 pdf 文件?

Harfbuzz 在字体文件中选择本地斜线字符