无法将数据写入Swift中的文件

vxqlmq5t  于 2022-11-21  发布在  Swift
关注(0)|答案(1)|浏览(135)

我有一个映像,我希望将其数据保存在此fileUri中,该文件由(“react-native-fs”)生成。库目录路径/保存的映像/{文件名}:
/Users/macbookpro/Library/Developer/CoreSimulator/Devices/9CBD2F1E-7330-418D-81BE-108C064DEA7E/data/Containers/Data/Application/C26348CC-3463-43EF-9B26-B7E31641E2EA/Library/saved_images/6B3A6A3A-8DE3-488B-AF43-A54775545B38.jpg
下面是我的实现:

do {
    let url = URL(string: fileUri)
    let fileExisted = FileManager().fileExists(atPath: url!.path)
    
    if (fileExisted) {
        try decryptedData.write(to: url!)
    } else {
        let handle = try FileHandle(forWritingTo: url!)
        handle.write(data) // data is type Data
        handle.closeFile()
    }
} catch {
    reject("FileError", "Failed to write file", error)
}

我还尝试了在fileUri前面加上和不加上file://let url = URL(fileURLWithPath: fileUri)

do {
    let url = URL(fileURLWithPath: fileUri)
    let fileExisted = FileManager().fileExists(atPath: url.path)
    
    if (fileExisted) {
        try decryptedData.write(to: url)
    } else {
        let handle = try FileHandle(forWritingTo: url)
        handle.write(data)
        handle.closeFile()
    }
} catch {
    reject("FileError", "Failed to write file " + error.localizedDescription, error)
}

它说:

ars1skjm

ars1skjm1#

您正在使用错误的API。

let url = URL(string: fileUri)

是代表完整(偶数编码)URL的字串,开头是file://https://之类的配置。
另一方面,fileUri实际上是一个没有方案的路径,因此必须使用

let url = URL(fileURLWithPath: fileUri)

这将通过添加file://方案返回一个非可选的URL。
应将fileUri重命名为filePath

相关问题