【问题标题】:How to get the path/directory component from a NSURL?如何从 NSURL 获取路径/目录组件?
【发布时间】:2012-09-25 00:27:33
【问题描述】:

我从 NSSavePanel 中检索了一个 NSURL。我现在有了这个 NSURL,它给了我以下信息:

file://localhost/Users/brett/Documents/asdf%20asdf.json

现在,我可以很容易地使用以下内容仅检索文件名:

[[[NSFileManager defaultManager] displayNameAtPath:pathAndFilename] stringByDeletingPathExtension]

这给了我本地化的文件名,正如预期的那样:asdf%20asdf

那么,我如何获得路径,像这样: file://localhost/Users/brett/Documents/

【问题讨论】:

    标签: macos cocoa nsurl


    【解决方案1】:

    您可以使用NSString 方法来处理文件路径。例如,

    NSString *directory = [[URL absoluteString] stringByDeletingLastPathComponent];
    NSString *filename = [[URL absoluteString] lastPathComponent];
    

    您可以在 Apple Docs 中找到其他有用的方法:NSString Class Reference -> 使用路径部分

    【讨论】:

    • 我知道,就该文件名而言,它不是本地化字符串。这就是我使用 displayNameAtPath: 消息到 NSFileManager 的原因。不过答案很好!
    • @Brett 不管怎样,我想我已经回答了你关于获取文件目录的问题。或者你期待什么?
    • 您确实回答正确,我只是害怕使用 NSString 函数而不是 NSURL 函数。也许我不应该。谢谢!
    • @Brett 我认为你不应该;)
    【解决方案2】:

    -[NSURL URLByDeletingLastPathComponent] 是实现这一目标的最简单方法。

    【讨论】:

    • NSString好多了。
    • 澄清:NSURL directoryURL = [fileURL URLByDeletingLastPathComponent];
    【解决方案3】:

    直接来自您的 NSSavePanel:

    NSSavePanel *savePanel;
    ...
    NSString *path = savePanel.directoryURL.path;
    

    【讨论】:

      猜你喜欢
      • 2019-05-14
      • 1970-01-01
      • 1970-01-01
      • 2021-04-08
      • 1970-01-01
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      相关资源
      最近更新 更多