iOS中写入文件成功但读取同一文件失败,求技术解答
iOS 文件写入成功但读取失败的问题解决
问题出在读取文件的代码行:
let dataContent = try Data(contentsOf: URL(fileURLWithPath: fileURL.absoluteString))
错误原因
fileURL.absoluteString返回的是带file://协议前缀的完整URL字符串(比如file:///xxx/test.txt),而URL(fileURLWithPath:)方法需要的是本地文件系统的纯路径字符串(不带file://前缀,比如/xxx/test.txt)。用带协议的字符串创建路径URL,会导致系统找不到对应的文件。
修正方案
直接使用已经构建好的fileURL即可,不需要重新创建URL:
let dataContent = try Data(contentsOf: fileURL)
如果一定要通过路径字符串创建,应该用fileURL.path获取不带协议的本地路径:
let dataContent = try Data(contentsOf: URL(fileURLWithPath: fileURL.path))
完整修正后的代码
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)") // 直接使用已有的fileURL let dataContent = try Data(contentsOf: fileURL) print("dbg_003") // 可选:验证读取内容 if let content = String(data: dataContent, encoding: .utf8) { print("读取的内容:\(content)") } } catch { print("Error: \(String(error.localizedDescription))") } } }
运行修正后的代码,就能成功读取刚写入的文件内容了。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

