Swift   发布时间:2022-04-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了swift – 使用FileManager复制文件时出错(CFURLCopyResourcePropertyForKey失败,因为它传递了一个没有方案的URL)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用FileManager的copyItem(at:path :)将一些(媒体)文件一个文件夹复制到另一个文件夹,但我收到错误

我正在使用Xcode 9 beta和Swift 4.

let fileManager = FileManager.default
let allowedMediaFiles = ["mp4","avi"]

func isMediaFile(_ file: URL) -> Bool {
    return allowedMediaFiles.contains(file.pathExtension)
}

func getMediaFiles(from folder: URL) -> [URL] {
    guard let enumerator = fileManager.enumerator(at: folder,includingPropertiesForKeys: []) else { return [] }

    return enumerator.allObjects
        .flatMap {$0 as? URL}
        .filter { $0.lastPathComponent.first != "." && isMediaFile($0)   
    }
}

func move(files: [URL],to LOCATIOn: URL) {
    do {
        for fileURL in files {
            try fileManager.copyItem(at: fileURL,to: LOCATIOn)
        }
    } catch (let error) {
        print(error)
    }
}


let mediaFilesURL = URL(String: "/Users/xxx/Desktop/Media/")!
let moveToFolder = URL(String: "/Users/xxx/Desktop/NewFolder/")!

let mediaFiles = getMediaFiles(from: mediaFilesURL)

move(files: mediaFiles,to: moveToFolder)

解决方法

发生错误是因

URL(String: "/Users/xxx/Desktop/Media/")!

创建没有方案的URl.您可以使用

URL(String: "file:///Users/xxx/Desktop/Media/")!

或者更简单地说,

URL(fileURLWithPath: "/Users/xxx/Desktop/Media/")

另请注意,在fileManager.copyItem()中,目标必须
包括文件名,而不仅仅是目的地
目录:

try fileManager.copyItem(at: fileURL,to: LOCATIOn.appendingPathComponent(fileURl.lastPathComponent))

大佬总结

以上是大佬教程为你收集整理的swift – 使用FileManager复制文件时出错(CFURLCopyResourcePropertyForKey失败,因为它传递了一个没有方案的URL)全部内容,希望文章能够帮你解决swift – 使用FileManager复制文件时出错(CFURLCopyResourcePropertyForKey失败,因为它传递了一个没有方案的URL)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。