如何编码文件 NSURL 以指向名称中带有“/”的文件
How to encode a file NSURL to point to a file with a '/' in the name
我正在读取一个文件名中有斜杠的文件。我可以验证它是否存在于我正在寻找它的路径中,但是从中创建 NSData
失败。我已尝试在用于构建 URL 的字符串中将 /
替换为 %2F
,但没有任何区别。
这是构建 URL:
的代码
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)
列表行给我一个空数据,即使文件存在于正确的路径中。我知道是 /
搞砸了。我怎样才能解决这个问题?我需要在文件名中保留 /
。
/
实际上不是 Darwin(OS X 或 iOS)文件名中的合法字符。 UI 只是使它 看起来 就像在某些情况下一样。 OS X 将 :
换成 /
。所以你的文件的实际名称是 This:That
。根据您使用的工具,它将呈现为 This:That
或 This/That
。这是 Mac OS 9 的旧保留。在 Mac OS 9 和更早版本中,:
是非法的,但 /
是合法的。在达尔文中(通过 OS X),情况正好相反。
如果可以的话,您真的非常想避免这种情况,只是文件名中没有 /
或 :
(-
和 _
通常是更安全,.
通常很好)。但是如果你必须,那么你将不得不在你的字符串中将它换成 :
。
我正在读取一个文件名中有斜杠的文件。我可以验证它是否存在于我正在寻找它的路径中,但是从中创建 NSData
失败。我已尝试在用于构建 URL 的字符串中将 /
替换为 %2F
,但没有任何区别。
这是构建 URL:
的代码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)
列表行给我一个空数据,即使文件存在于正确的路径中。我知道是 /
搞砸了。我怎样才能解决这个问题?我需要在文件名中保留 /
。
/
实际上不是 Darwin(OS X 或 iOS)文件名中的合法字符。 UI 只是使它 看起来 就像在某些情况下一样。 OS X 将 :
换成 /
。所以你的文件的实际名称是 This:That
。根据您使用的工具,它将呈现为 This:That
或 This/That
。这是 Mac OS 9 的旧保留。在 Mac OS 9 和更早版本中,:
是非法的,但 /
是合法的。在达尔文中(通过 OS X),情况正好相反。
如果可以的话,您真的非常想避免这种情况,只是文件名中没有 /
或 :
(-
和 _
通常是更安全,.
通常很好)。但是如果你必须,那么你将不得不在你的字符串中将它换成 :
。