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

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

【问题讨论】:

    标签: iphone objective-c ios ios4 filesystems


    【解决方案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))
              }
      
          }
      }
      
      

      【讨论】:

        猜你喜欢
        • 2012-01-17
        • 2015-12-17
        • 2016-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多