Documents Directory: mi ez, célja és hozzáférés a fájlokhoz

Szerző: IT Sectr Megjelenés: 2026-07-10 Olvasási idő: 10 perc

Documents Directory — egy könyvtár az iOS alkalmazás homokozójában, amely a felhasználói adatok tárolására szolgál, amelyeket az alkalmazás munkamenetei között meg kell őrizni, és a felhasználó számára elérhetővé kell tenni iTunes File Sharing és iCloud segítségével. Az Apple File System Programming Guide (2024) szerint ennek a könyvtárnak a tartalma automatikusan bekerül az iCloud és iTunes biztonsági mentésbe, ezért a fejlesztőnek tudatosan kell választania, hogy milyen adatokat helyezzen el a Documents-ben. A Caches Directory-val ellentétben a Documents-ben lévő fájlokat a rendszer nem törli, ha helyhiány van — a méret kezeléséért az alkalmazás a felelős.

Főbb pontok

  • Documents Directory — a fő könyvtár a felhasználói fájlok számára, amelyeket meg kell őrizni és elérhetővé kell tenni iTunes-on keresztül.
  • A Documents adatai automatikusan biztonsági mentésre kerülnek az iCloud-ban és iTunes-ban — vedd ezt figyelembe a tároló tervezésekor.
  • A rendszer nem törli a Documents fájljait a gyorsítótár tisztításakor — a hely felszabadításáért a fejlesztő felelős.
  • A könyvtár útvonalát a NSSearchPathForDirectoriesInDomains segítségével szerezheted meg NSDocumentDirectory paraméterrel, vagy a FileManager.urls-en keresztül.
  • Nagyméretű, helyreállítható fájlokhoz használd a Caches Directory-t — hogy ne foglald a helyet az iCloud biztonsági mentésben.

Mi az a Documents Directory iOS-ben?

Documents Directory — egy könyvtár az iOS alkalmazás homokozójában, amely a felhasználói adatok tárolására szolgál, amelyeket az indítások között meg kell őrizni és a felhasználó számára elérhetővé kell tenni. Minden alkalmazás saját elkülönített homokozót kap, és a Documents az egyik kulcsfontosságú könyvtár a Caches, tmp és Library mellett.

Az iOS szigorú homokozót használ: az alkalmazásnak nincs hozzáférése más alkalmazások fájlrendszeréhez és rendszerkönyvtáraihoz különleges engedélyek nélkül. A Documents Directory — az egyetlen könyvtár, amelynek tartalmát a felhasználó megtekintheti az iTunes File Sharing segítségével (a megfelelő UIFileSharingEnabled kulcs bekapcsolásakor az Info.plist-ben).

Az Apple WWDC 2023 adatai szerint az App Store-ban lévő alkalmazások több mint 85%-a használja a Documents Directory-t legalább egyfajta felhasználói adat tárolására — az exportált PDF-ektől a mentett játékfájlokig és exportált képekig.

A fejlesztőnek meg kell értenie: a Documents-ben lévő fájlok automatikusan bekerülnek az iCloud és iTunes biztonsági mentésbe. Ha az alkalmazás nagy mennyiségű helyreállítható adatot tárol a Documents-ben (például képgyorsítótárat vagy ideiglenes fájlokat), ez a felhasználó iCloud tárhelyének indokolatlan elfoglalásához vezet.

Hogyan szerezzük meg az útvonalat a Documents Directory-hoz

Swift-ben a Documents Directory útvonalát a FileManager segítségével szerezheted meg. Az Apple az URL-alapú API használatát ajánloja a string-alapú helyett a modernebb iOS képességekkel való jobb kompatibilitás érdekében.

swift
import Foundation

let fileManager = FileManager.default
guard let documentsURL = fileManager.urls(
    for: .documentDirectory,
    in: .userDomainMask
).first else { return }

// Fájl létrehozása a Documents-ben
let fileURL = documentsURL.appendingPathComponent("report.pdf")
let data = Data("Hello, world!".utf8)
try data.write(to: fileURL)

Az Objective-C a NSSearchPathForDirectoriesInDomains használja — egy régebbi, de még mindig támogatott megközelítés, amely string útvonalat ad vissza URL helyett.

objective-c
@import Foundation;

NSArray *paths = NSSearchPathForDirectoriesInDomains(
    NSDocumentDirectory,
    NSUserDomainMask,
    YES
);
NSString *documentsPath = paths.firstObject;
NSString *filePath = [documentsPath stringByAppendingPathComponent:@"report.pdf"];

A Swift-ben lévő modern projekteknek a FileManager.urls-t kell használniuk, mert ez a metódus URL-t ad vissza, nem stringet, ami csökkenti az útvonal kódolásából származó hibák kockázatát és típusbiztonságosabbá teszi a kódot.

Milyen adatokat tároljunk a Documents-ben

Documents Directory a felhasználó által létrehozott vagy a felhasználó számára explicit formában szükséges adatok számára lett kialakítva. Az Apple több kategóriát emel ki, amelyek alkalmasak erre a könyvtárra.

Felhasználói dokumentumok és fájlok

Fájlok, amelyeket a felhasználó létrehoz vagy importál — szöveges dokumentumok, PDF-ek, képek, exportált jelentések, biztonsági mentési fájlok. Ezek az adatok közvetlen értékkel bírnak a felhasználó számára, és elvesztésük kritikus lenne.

Játékmentések és alkalmazás állapota

Játékmentések, alkalmazás állapotának fájljai, exportált projektek — minden, amit a felhasználó elvár helyreállítani az alkalmazás újratelepítése után. A kritikus adatokhoz azonban ajánlott az iCloud Key-Value Storage vagy az iCloud szinkronizálással rendelkező Core Data használata is.

AdattípusAlkalmas a Documents számáraAlternatíva
PDF és szöveges dokumentumokIgen
Képek gyorsítótáraNemCaches Directory
JátékmentésekIgeniCloud KVS
Naplók és hibakeresési adatokNemCaches vagy tmp
Exportált jelentésekIgen

A legfontosabb kritérium: ha az adatok visszaállíthatók a hálózatról vagy újra létrehozhatók — a helyük a Caches-ben van, nem a Documents-ben. Minden gigabájt a Documents-ben egy gigabájt a felhasználó iCloud biztonsági mentésében.

Biztonsági mentés és szinkronizálás

iOS automatikusan beleteszi a Documents Directory tartalmát a biztonsági mentésbe, amikor az eszközt csatlakoztatják az iTunes-hoz vagy amikor szinkronizálnak az iCloud-dal. Ez a viselkedés nem kapcsolható ki könyvtár szinten — csak fájlonként az NSURLIsExcludedFromBackupKey attribútum segítségével.

iOS 5.0-tól kezdve az Apple elutasítani kezdte azokat az alkalmazásokat, amelyek nagy mennyiségű helyreállítható adatot tárolnak a Documents-ben. Apple ajánlás: az újra letölthető fájlokat a Caches Directory-ban kell tárolni, a biztonsági mentésből való kizárási jelzővel.

swift
import Foundation

let documentsURL = FileManager.default
    .urls(for: .documentDirectory, in: .userDomainMask)
    .first!

// Fájl kizárása az iCloud biztonsági mentésből
var resourceValues = URLResourceValues()
resourceValues.isExcludedFromBackup = true

var fileURL = documentsURL.appendingPathComponent("cached_data.json")
try fileURL.setResourceValues(resourceValues)

Az iCloud szinkronizálás az NSUbiquitousContainer-on keresztül működik, ha az alkalmazás iCloud Documents-t használ. Ebben az esetben a Documents Directory fájljai automatikusan szinkronizálódnak a felhasználó eszközei között. Az iCloud nélküli alkalmazásoknál a szinkronizálás a biztonsági mentésre korlátozódik.

Documents Directory vs Caches Directory

A Documents és a Caches közötti különbség — az egyik leggyakoribb tévhit a kezdő iOS fejlesztők körében. A fő különbség: a rendszer bármikor törölheti a Caches fájljait a hely felszabadítása érdekében, de soha nem nyúl a Documents-hoz a felhasználó tudta nélkül.

JellemzőDocuments DirectoryCaches Directory
iCloud biztonsági mentésIgen (alapértelmezett)Nem
Törlés a rendszer általSohaHelyhiány esetén
iTunes File SharingIgen (jelző bekapcsolásakor)Nem
CélFelhasználói adatokGyorsítótár, ideiglenes adatok
Adatok helyreállításaHelyreállítást igényelÚjra letölthető a hálózatról

Az Apple Developer Documentation (2024) szerint a Documents Directory helytelen használata — az alkalmazások elutasításának gyakori oka a felülvizsgálat során: ha az alkalmazás több mint néhány megabájt helyreállítható adatot tárol a Documents-ben, az Apple ajánlja őket áthelyezni a Caches-be vagy alkalmazni az NSURLIsExcludedFromBackupKey-t.

Gyakorlati szabály: ha a felhasználó szomorú lesz a fájl elvesztésekor — tárold a Documents-ben. Ha a fájl újra letölthető vagy előállítható — tárold a Caches-ben.

Legjobb gyakorlatok a Documents használatához

A tapasztalt iOS fejlesztők számos szabályt dolgoztak ki, amelyek segítenek elkerülni a Documents Directory-val kapcsolatos problémákat az alkalmazás életciklusának minden szakaszában — a fejlesztéstől az App Store-beli kiadásig.

A könyvtár méretének figyelése

Rendszeresen ellenőrizd a Documents Directory méretét a FileManager.enumerator(at:includingPropertiesForKeys:) segítségével. Ha a méret meghaladja a 100 MB-ot olyan adatok esetén, amelyek nem felhasználói adatok — ez ok a tárolási architektúra újragondolására.

A helyreállítható fájlok kizárása a biztonsági mentésből

Minden olyan fájlhoz, amely újra letölthető a hálózatról, állítsd be az isExcludedFromBackup = true értéket. Ez csökkenti a felhasználó iCloud tárhelyének terhelését és csökkenti az alkalmazás App Review általi elutasításának kockázatát.

Migráció frissítéskor

Az adatformátum megváltoztatásakor a Documents-ben előre lásd el a migrációt: ne töröld a régi fájlokat, amíg nem győződtél meg arról, hogy az újak helyesen lettek létrehozva. Használj verzió-specifikus alkönyvtárakat.

swift
import Foundation

let documentsURL = FileManager.default
    .urls(for: .documentDirectory, in: .userDomainMask)
    .first!

let versionDir = documentsURL.appendingPathComponent("v2")
try FileManager.default.createDirectory(
    at: versionDir,
    withIntermediateDirectories: true
)

E gyakorlatok betartása csökkenti a felhasználói adatok elvesztésének kockázatát, kisebbé teszi az iCloud biztonsági mentés méretét, és megkönnyíti az App Store felülvizsgálatának átjutását.

Gyakran ismételt kérdések

Hozzáférhet-e a felhasználó a Documents Directory-hoz iTunes nélkül?

Igen, a Files — a beépített iOS alkalmazás a 11-es verziótól kezdve. Az UIFileSharingEnabled kulcs bekapcsolásakor az Info.plist-ben a Documents Directory tartalma megjelenik a Files alkalmazás „Az iPhone-omon“ szakaszában. A felhasználó megtekintheti, másolhatja és törölheti a fájlokat.

Mi történik a Documents Directory-val az alkalmazás törlésekor?

Az alkalmazás teljes homokozója, beleértve a Documents Directory-t, Caches, tmp és Library-t, teljesen eltávolításra kerül az eszközről. Az iCloud biztonsági mentései a helyreállításig vagy kézi törlésig megmaradnak. Újratelepítéskor az alkalmazás tiszta homokozóval indul.

Hogyan ellenőrizhetem a Documents Directory méretét kódban?

Használd a FileManager.enumerator-t a könyvtár összes fájljának bejárásához és méretösszegzéséhez. Minden fájlhoz szerezd meg a .fileSize attribútumot a resourceValues(forKeys:) segítségével. Alternatívként használd az URLResourceKey.fileSizeKey és .directoryEnumerationResults értékeket.

Lehet Core Data SQLite adatbázist tárolni a Documents-ben?

Alapértelmezés szerint a Core Data a SQLite fájlt a Library/Application Support-ban hozza létre, nem a Documents-ben. Az adatbázis áthelyezése a Documents-be nem ajánlott — bekerül az iTunes File Sharing-ba és a felhasználó véletlenül törölheti vagy módosíthatja. Kivétel: ha az alkalmazás kifejezetten hozzáférést biztosít a felhasználónak az adatokhoz a Core Data-n keresztül.

Mi az UIFileSharingEnabled és hogyan kapcsolhatom be?

UIFileSharingEnabled (Application supports iTunes file sharing) — egy logikai kulcs az Info.plist-ben. YES-re állítva a felhasználó másolhat fájlokat a Documents Directory-ból az iTunes-on és a Files-on keresztül. Add hozzá a kulcsot az Info.plist-hez: UIFileSharingEnabled = YES. Csak akkor kapcsold be, ha az alkalmazás ténylegesen felhasználói dokumentumokat hoz létre.

Összefoglaló

  • Documents Directory — a fő hely a felhasználói adatok számára az iOS alkalmazásban, amelyeket meg kell őrizni és biztonsági mentést kell készíteni róluk.
  • A könyvtár útvonalát a FileManager.urls(for: .documentDirectory) segítségével szerezheted meg Swift-ben vagy az NSSearchPathForDirectoriesInDomains segítségével Objective-C-ben.
  • A Documents-ból származó összes fájl alapértelmezés szerint bekerül az iCloud és iTunes biztonsági mentésbe — a kizáráshoz használd az isExcludedFromBackup-t.
  • A rendszer nem törli a Documents fájljait magától, ellentétben a Caches Directory-val.
  • Helyreállítható adatokhoz (gyorsítótár, ideiglenes fájlok) használd a Caches Directory-t, ne a Documents-t.
  • Az UIFileSharingEnabled kulcs megnyitja a hozzáférést a Documents-hez iTunes-on és a Files alkalmazáson keresztül — használd tudatosan.
  • Figyeld rendszeresen a Documents Directory méretét: a 100 MB túllépése nem kritikus adatok esetén architekturális probléma.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is