SwiftUI 使用FileManager讀取和保存檔案的方法
xcode 13.4.1, swift 5.5, iOS 15.4
2022-09-06
在 iOS 中每個 App 中有個sandbox機制來保存和讀取檔案,以避免存取到其他App的內容,這次來講講如何使用 FileManager 來定位目錄位置和存取檔案。
1. 使用FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]可以定位到sandbox的documents的目錄 (當然你可以用playground來做):
import SwiftUI
struct ReadFileExample: View {
var body: some View {
VStack {
Text("Data")
}
.onAppear {
let sandboxDocumentURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
print(sandboxDocumentURL)
}
}
}
2. 在得到sandboxDocumentURL後,再添加檔案名稱File和檔案擴展名data,檔案完整名稱就是File.data,先把字符串內容寫到fileURL,再讀出來放到content中,然後再 App 中的Text顯示出來:
import SwiftUI
struct ReadFileExample: View {
@State var content : String = "Data"
var body: some View {
VStack {
Text(content)
}
.onAppear {
let sandboxDocumentURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
let fileURL = sandboxDocumentURL.appendingPathComponent("File").appendingPathExtension("data")
do {
try "ONE\nTWO".write(to: fileURL, atomically: true, encoding: .utf8)
content = try String(contentsOf: fileURL, encoding: .utf8)
} catch let error {
print(error)
}
}
}
}