如何将文件NSURL编码为指向带有' /'的文件在名字里

时间:2016-04-30 16:22:59

标签: swift nsurl

我正在读取名称中带有斜杠的文件。我可以验证它是否存在于我正在寻找它的路径中,但是从中创建NSData失败。我尝试使用构建网址的字符串中的/替换%2F,但它并没有带来任何影响。

这是构造网址的代码:

let fileID = "This/That"
let filename = "\(fileID).json"

let bundleDirURL = myBundle.URLForResource("dirname", withExtension: nil, subdirectory: "MyFiles")
let fileURL = bundleDirURL.URLByAppendingPathComponent("Subpath").URLByAppendingPathComponent(filename)

let data = NSData(contentsOfURL: fileURL)

列表行给我一个空数据,即使该文件存在于正确的路径中。我知道/绊倒了它。我怎样才能解决这个问题?我需要在文件名中保留/

1 个答案:

答案 0 :(得分:3)

/实际上不是Darwin(OS X或iOS)文件名中的合法字符。在某些情况下,用户界面只是让它看起来像一样。 OS X与:交换/。因此,您文件的实际名称为This:That。根据您使用的工具,它将呈现为This:ThatThis/That。这是来自Mac OS 9的旧版保留。在Mac OS 9及更早版本中,:是非法的,但/是合法的。在达尔文(通过OS X),情况恰恰相反。

如果可以的话,你真的非常希望避免这种情况,而且文件名中没有/:-_通常更安全,并且.通常很好)。但如果必须,那么您将不得不在字符串中将其换成: