NSFileManager.defaultManager()。fileExistsAtPath返回false而不是true

时间:2015-12-07 13:56:47

标签: ios swift nsfilemanager

怎么可能?

JOINs

这是let exists = NSFileManager.defaultManager().fileExistsAtPath(path.absoluteString) print("exists: \(exists)") //false

path.absoluteString

你可以看到它应该在哪里:

enter image description here

发生了什么事?

2 个答案:

答案 0 :(得分:85)

(此答案中的代码已针对Swift 3及更高版本进行了更新。)

显然,您的path变量是NSURL(描述文件路径)。获得路径 一个字符串,使用path属性,而不是absoluteString

let exists = FileManager.default.fileExists(atPath: path.path)

absoluteString以字符串格式返回URL,包括 file:计划等。

示例:

let url = URL(fileURLWithPath: "/path/to/foo.txt")

// This is what you did:
print(url.absoluteString)
// Output:    file:///path/to/foo.txt

// This is what you want:
print(url.path)
// Output:    /path/to/foo.txt

答案 1 :(得分:4)

如果要检查路径是否存在,则应检查路径

let url = NSURL(string: "balabala")

let path = url?.path
//Check path