iOS 写入和读取相同的文件

iOS write & read the same file

提问人:Tom 提问时间:9/7/2023 更新时间:9/7/2023 访问量:39

问:

亲爱的

这是一个如此明显的情况,我敢肯定我误解了某些事情,但有人可以向我解释为什么如此简单的写入文件并重新读取同一文件会失败吗? 当然,这不是完整的代码,我只是将其简化到最低限度以举例说明我的问题:

import SwiftUI

struct ContentView: View {
    var body: some View {
        Text("Hello, world!")
            .padding()
    }

    init() {
        let filename = "test.txt"
        let data: Data = "My file content test".data(using: .utf8)!
        let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
        let fileURL = documentsDirectory.appendingPathComponent(filename)
        do {
            print("dbg_001 : \(fileURL)")
            try data.write(to: fileURL)
            print("dbg_002 : \(fileURL.absoluteString)")
            let dataContent = try Data(contentsOf: URL(fileURLWithPath: fileURL.absoluteString))
            print("dbg_003")
        } catch {
            print("Error: \(String(error.localizedDescription))")
        }


    }
}

当我在iOS iPod模拟器上启动上面的应用程序时,我得到以下输出:

dbg_001 : file:///Users/Joe/Library/Developer/CoreSimulator/Devices/FC7F11C6-87C1-4536-80E5-E5E1C8C6653C/data/Containers/Data/Application/762140F3-76B0-44D1-AD48-0C89B2AAA150/Documents/test.txt
dbg_002 : file:///Users/Joe/Library/Developer/CoreSimulator/Devices/FC7F11C6-87C1-4536-80E5-E5E1C8C6653C/data/Containers/Data/Application/762140F3-76B0-44D1-AD48-0C89B2AAA150/Documents/test.txt
Error: The file ???test.txt??? couldn???t be opened because there is no such file

因此,写入成功,但读取不成功。我错过了什么?

尝试写入文件,因此读回了以前写入的数据

iOS SWIFT 文件 IO

评论

1赞 Larme 9/7/2023
URL(fileURLWithPath: fileURL.absoluteString)这是不对的......它应该是 ,或者只是使用 ,因为它已经是一个 URL。URL(fileURLWithPath: fileURL.path)fileURL
0赞 Tom 9/7/2023
fileURL.path 已经工作(只有 fileURL 不会编译)非常感谢!
0赞 Larme 9/7/2023
try Data(contentsOf: fileURL)不起作用?
0赞 HangarRash 9/8/2023
@Tom Larme 的意思是用 替换整个语句。无需从现有的 .URL(fileURLWithPath: fileURL.absoluteString)fileURLURLURL

答: 暂无答案