FileManager.createDirectory 失败,NSCocoaErrorDomain 代码:518
FileManager.createDirectory fails with NSCocoaErrorDomain Code: 518
我在做
let tempDirectory = URL(string: "\(NSTemporaryDirectory())video/")!
do {
try FileManager.default.createDirectory(
at: tempDirectory,
withIntermediateDirectories: true)
} catch { report(error) }
这通常会引发 NSCocoaErrorDomain 代码:518。
知道原因吗?我认为可以,因为那里已经有东西了,所以我添加了
var isDir: ObjCBool = false
if FileManager.default.fileExists(
atPath: tempDirectory.absoluteString,
isDirectory: &isDir
) {
if isDir.boolValue {
print("Temp directory exists on launch")
}
else {
print("Temp directory exists on launch and is a file")
}
return
}
但这似乎没有捕捉到任何东西
您 tempDirectory
的建筑不正确。你想要:
let tempDirectory = URL(fileURLWithPath: NSTemporaryDirectory()). appendingPathComponent("video")
您的代码存在的问题是您没有将值 URL 字符串传递给 URL(string:)
。由于您有文件路径,因此您需要使用 URL(fileURLWithPath:)
。并使用提供的方法构建 paths/URLs 以确保正确添加斜线和其他部分。
从您的原始代码打印您的 tempDirectory
值,然后从我的答案中的代码打印新值。注意关键区别。
您的 URL 将类似于:
/var/...
它可能在 "video" 之前缺少斜线。
正确的文件 URL 应该是这样的:
file:///var/...
我在做
let tempDirectory = URL(string: "\(NSTemporaryDirectory())video/")!
do {
try FileManager.default.createDirectory(
at: tempDirectory,
withIntermediateDirectories: true)
} catch { report(error) }
这通常会引发 NSCocoaErrorDomain 代码:518。
知道原因吗?我认为可以,因为那里已经有东西了,所以我添加了
var isDir: ObjCBool = false
if FileManager.default.fileExists(
atPath: tempDirectory.absoluteString,
isDirectory: &isDir
) {
if isDir.boolValue {
print("Temp directory exists on launch")
}
else {
print("Temp directory exists on launch and is a file")
}
return
}
但这似乎没有捕捉到任何东西
您 tempDirectory
的建筑不正确。你想要:
let tempDirectory = URL(fileURLWithPath: NSTemporaryDirectory()). appendingPathComponent("video")
您的代码存在的问题是您没有将值 URL 字符串传递给 URL(string:)
。由于您有文件路径,因此您需要使用 URL(fileURLWithPath:)
。并使用提供的方法构建 paths/URLs 以确保正确添加斜线和其他部分。
从您的原始代码打印您的 tempDirectory
值,然后从我的答案中的代码打印新值。注意关键区别。
您的 URL 将类似于:
/var/...
它可能在 "video" 之前缺少斜线。
正确的文件 URL 应该是这样的:
file:///var/...