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/...