iOS复制文件到外部设备



我正在开发一个iOS应用程序,将文件写入外部设备。我已经安装并使用UIDocumentPicker与以下代码:let documentPickerController = UIDocumentPickerViewController(foreexport: usbSendungURL)documentPickerController.delegate = self自我。present(documentPickerController, animated: true, completion: nil)成功复制到我的设备上。然而,由于这些文件可能有点大,我决定我需要安装一个UIProgressView。不幸的是,DocumentPicker没有这个功能,所以我改变了我的代码如下:let documentPickerController = UIDocumentPickerViewController(forOpeningContentTypes: [.folder])documentPickerController.delegate = self自我。present(documentPickerController, animated: true, completion: nil)这使我能够在委托中选择选定的文件夹:

func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
documentPickerUrls = urls
moveFilesToUSB(urls: urls)
}

我然后追加适当的文件名,并使用FileManager moveItem函数:尝试FileManager.default.moveItem(at: usbsendunurl [0], to: url1!)这使我能够为进度更新安装必要的计时器功能。不幸的是,FileManager似乎无法写入外部设备,因为我收到一条错误消息,指出我没有授权写入设备,尽管DocumentPicker这样做。有办法解决这个问题吗?如有任何帮助,不胜感激。

UIDocumentPickerViewController返回的url是安全范围的,访问目录需要使用url.startAccessingSecurityScopedResource()url.stopAccessingSecurityScopedResource()。这在提供对目录的访问中有清楚的解释。

最新更新