سیستم فایل (File System)
اینجا «سیستم فایل (File System)» را ساده می گوییم. سیستم فایل خانه داده های اپ است. داخل «سندباکس (Sandbox)» نگه داری می شود. با «فایل منیجر (FileManager)» مسیرها را می گیریم و می نویسیم. کلید سئو: سیستم فایل iOS.
پیداکردن پوشه ها
با FileManager مسیر «Documents» و «Caches» را می گیریم. «دامنه کاربر (User Domain)» یعنی فضای همان اپ.
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);
این کد پوشه های سندباکس را چاپ می کند. سپس می توانیم فایل بسازیم.
خواندن و نوشتن داده
با «دیتا (Data)» و «رشته (String)» می نویسیم و می خوانیم. مسیر فایل را در Documents می سازیم.
import Foundation;
let docs = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!;
let file = docs.appendingPathComponent("hello.txt");
let text = "Hello files!";
let _ = try? text.write(to: file, atomically: true, encoding: .utf8);
let loaded = try? String(contentsOf: file, encoding: .utf8);
print(loaded ?? "");
اول می نویسیم؛ سپس همان فایل را می خوانیم. مانند دفتر مشق و مرور آن.
ساخت و حذف
پوشه با createDirectory ساخته می شود. حذف آیتم با removeItem انجام می شود.
import Foundation;
let docs = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!;
let folder = docs.appendingPathComponent("Temp");
let _ = try? FileManager.default.createDirectory(at: folder, withIntermediateDirectories: true);
let _ = try? FileManager.default.removeItem(at: folder);
نکته: اسناد کاربر را در Documents نگه دار. داده موقتی را در Caches بگذار.
گام های عملی سریع
- 1) با FileManager مسیر Documents را بگیر.
- 2) آدرس فایل را با appendingPathComponent بساز.
- 3) با String یا Data بنویس و بعد بخوان.
جمع بندی سریع
- سندباکس امنیت فایل ها را حفظ می کند.
- Documents برای فایل های پایدار است.
- Caches برای داده موقتی است.
- FileManager مسیرها را مدیریت می کند.
- نوشتن و خواندن خیلی سرراست است.
همچنین بخش های مرتبط: CloudKit برای همگام سازی، و Keychain برای نگه داری رازها.