gpt4 book ai didi

ios - 无法将文件从 Bundle 复制到 Documents Directory 子文件夹

转载 作者:行者123 更新时间:2023-11-28 15:10:34 25 4
gpt4 key购买 nike

我使用以下代码创建了一个Documents Directory 子文件夹:

fileprivate func createFolderOnDocumentsDirectoryIfNotExists() {
let folderName = "HTML"
let fileManager = FileManager.default
if let tDocumentDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first {
let filePath = tDocumentDirectory.appendingPathComponent("\(folderName)")
if !fileManager.fileExists(atPath: filePath.path) {
do {
try fileManager.createDirectory(atPath: filePath.path, withIntermediateDirectories: true, attributes: nil)
} catch {
print("Couldn't create document directory")
}
}
print("Document directory is \(filePath)")
}
}

这样做子文件夹按预期创建。我通过打印 documents directory 内容来证明它显示了 HTML 文件夹/文件

然后我尝试将应用程序 Bundle 中存在的另一个文件复制到这个创建的子文件夹,但不知何故我收到一条错误消息,指出无法将特定文件复制到 Documents 因为同名的项目已经存在。

这很令人困惑,因为即使在新安装时,没有任何复制的文件,它也说该文件存在,但如果我打印子文件夹内容,则什么也没有显示。

我正在尝试使用以下代码从 bundle 沙箱中复制文件:

fileprivate func copyCSSFileToHTMLFolder() {
guard let cssPath = Bundle.main.path(forResource: "swiss", ofType: ".css") else {
print("css not found -- returning")
return
}
let fileManager = FileManager.default

if let tDocumentDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first {
let filePath = tDocumentDirectory.appendingPathComponent("HTML")
if fileManager.fileExists(atPath: filePath.path) {
do {
try fileManager.copyItem(atPath: cssPath, toPath: filePath.path)
} catch {
print("\nFailed to copy css to HTML folder with error:", error)
}
}
}
}

我在这里做错了什么?

问候。

最佳答案

您需要创建一个完整路径,包括文件名。

改变:

let filePath =  tDocumentDirectory.appendingPathComponent("HTML")

到:

let filePath =  tDocumentDirectory.appendingPathComponent("HTML").appendingPathComponent(cssURL.lastPathComponent)

lastPathComponent 的上述用法可以通过更改:

guard let cssPath = Bundle.main.path(forResource: "swiss", ofType: ".css") else {

到:

guard let cssURL = Bundle.main.url(forResource: "swiss", withExtension: "css") else {

当然,在调用 copyItem 时使用 cssURL.path

关于ios - 无法将文件从 Bundle 复制到 Documents Directory 子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47734676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com