File System
File System
Work with the app sandbox using FileManager, document directories, and data read/write APIs.
Locate Directories
Use FileManager to find the Documents and Caches folders.
Syntax: FileManager.default.urls(for:in:), e.g. .documentDirectory, .cachesDirectory
Example
import Foundation
let docs = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let caches = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first!
print("Docs:", docs)
print("Caches:", caches)
import SwiftUI
struct ContentView: View {
var body: some View {
Text("Locate Directories")
.padding()
}
}
import SwiftUI
@main
struct MyApp: App {
var body: some Scene {
WindowGroup { ContentView() }
}
}
This example locates the sandboxed Documents and Caches directories.
Read & Write
Write and read text or binary data using Data and String APIs.
Syntax:
try data.write(to: url)let data = try Data(contentsOf: url)try text.write(to: url, atomically:encoding:)
Example
import Foundation
let docs = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let file = docs.appendingPathComponent("hello.txt")
// Write text
let text = "Hello files!"
try? text.write(to: file, atomically: true, encoding: .utf8)
// Read text
let loaded = try? String(contentsOf: file, encoding: .utf8)
print(loaded ?? "")
import SwiftUI
struct ContentView: View {
var body: some View {
Text("Read & Write Files")
.padding()
}
}
import SwiftUI
@main
struct MyApp: App {
var body: some Scene {
WindowGroup { ContentView() }
}
}
This example writes a text file in Documents and reads it back.
Create and Remove
Create folders with createDirectory and delete entries with removeItem.
Syntax:
try FileManager.default.createDirectory(at:withIntermediateDirectories:)try FileManager.default.removeItem(at:)
Example
import Foundation
let docs = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let folder = docs.appendingPathComponent("Temp")
try? FileManager.default.createDirectory(at: folder, withIntermediateDirectories: true)
try? FileManager.default.removeItem(at: folder)
import SwiftUI
struct ContentView: View {
var body: some View {
Text("Create and Remove Entries")
.padding()
}
}
import SwiftUI
@main
struct MyApp: App {
var body: some Scene {
WindowGroup { ContentView() }
}
}
This example creates and then removes a subfolder in the Documents directory.
Tip: Store user documents in the Documents directory; cache ephemeral data in Caches.