Fájlrendszer és dokumentumok a mobilfejlesztésben: mi ez, milyen elvek és hogyan működik

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

A fájlrendszerrel való munka minden mobilalkalmazás alapja. Minden platform saját hozzáférési modellt kínál: az iOS Sandbox funkciója elkülöníti az alkalmazásokat külön tárolókban, míg az Android Scoped Storage korlátozza a közös tárhelyhez való közvetlen hozzáférést. A Google Developer Documentation (2026) szerint a Scoped Storage bevezetése az Android 10 rendszerrel az adattárolási architektúra teljes felülvizsgálatát tette szükségessé. Ebben az útmutatóban a FileManager, MediaStore API, Storage Access Framework és DocumentProvider funkciókat tárgyaljuk mindkét platformhoz.

Főbb pontok

  • Sandbox — egy elkülönített iOS környezet, ahol minden alkalmazás csak a saját könyvtárában működik, más alkalmazások adataihoz való hozzáférés nélkül.
  • Scoped Storage — Android 10+ modell, amely korlátozza a közvetlen hozzáférést a külső tárhelyhez a MediaStore API és SAF segítségével.
  • FileManager — az elsődleges iOS osztály fájlműveletekhez: létrehozás, olvasás, másolás, áthelyezés és törlés.
  • Storage Access Framework — az Android rendszermechanizmusa dokumentumok kiválasztásához Intent ACTION_OPEN_DOCUMENT használatával.
  • DocumentProvider — egy Android komponens az alkalmazásfájlok közzétételéhez a megosztott fájlrendszerben SAF segítségével.

Mi a fájlrendszer a mobilalkalmazásokban?

A fájlrendszer a mobilalkalmazásokban API-k, biztonsági szabályok és korlátozások összessége, amelyek meghatározzák az adatok tárolását és elérését iOS és Android eszközökön. Az asztali operációs rendszerekkel ellentétben a mobilplatformok elkülönítik az egyes alkalmazásokat, hogy megvédjék a felhasználói adatokat más programok általi jogosulatlan olvasástól.

Architekturális különbségek az iOS és Android között

Az iOS a Sandbox modellt használja, ahol minden alkalmazás a saját tárolójában létezik szigorúan korlátozott engedélyekkel. A 10-es verzió előtt az Android teljes hozzáférést biztosított a külső tárhelyhez, de a Scoped Storage bevezetésével a megközelítés közelebb került az iOS-hez. A fő különbség, hogy az iOS teljesen elkülöníti a fájlrendszert, míg az Android több hozzáférési szintet kínál: egy privát könyvtárat, nyilvános MediaStore-t és ideiglenes hozzáférést SAF segítségével.

Fő tárolási típusok

A mobilalkalmazások háromféle adattárolást használnak. Privát tárolás — egy csak az alkalmazás számára elérhető könyvtár belső fájlok és gyorsítótár számára. Megosztott tárolás — médiafájlok a MediaStore (Android) vagy Files App (iOS) segítségével. Felhőtárolás — iCloud Drive és Google Drive az eszközök közötti szinkronizáláshoz. Minden típusnak megvannak a saját korlátai a méret, a fájlok élettartama és a hozzáférési feltételek tekintetében.

Tárolási típusiOSAndroid
PrivátDocuments, Library, CachesgetFilesDir(), getCacheDir()
Megosztott médiaPHPhotoLibrary választón keresztülMediaStore API (ContentResolver)
Megosztott dokumentumokFiles App UIDocumentPicker segítségévelStorage Access Framework (SAF)
FelhőiCloud Drive (UIDocument)Google Drive API
GyorsítótárCaches könyvtár, rendszer tisztítjagetCacheDir(), getExternalCacheDir()

Fájlrendszer a mobilfejlesztésben: Sandbox iOS rendszeren

Sandbox az iOS biztonsági architektúrája, amely elkülöníti az egyes alkalmazásokat. Egy alkalmazás csak a saját homokozóján belül olvashat és írhat. Névjegyek, fényképek vagy más alkalmazások fájljainak eléréséhez rendszerválasztókat kell használni: UIImagePickerController vagy UIDocumentPickerViewController. A Files App elérése az Info.plist fájlban lévő UIFileSharingEnabled jelzőn keresztül konfigurálható. A fájlrendszer az iOS mobilfejlesztésben megköveteli a könyvtárszerkezet megértését és a megfelelő hely kiválasztását minden adattípushoz.

A homokozó könyvtárszerkezete

Az iOS homokozó több szabványos könyvtárból áll. Documents — felhasználói fájlokhoz, része az iCloud Backupnak. Caches — ideiglenes adatokhoz, amelyeket a rendszer törölhet, ha kevés a tárhely. Temporary — az aktuális munkamenet fájljaihoz, újraindításkor törlődik. Application Support — a felhasználó elől elrejtett belső alkalmazásadatokhoz. A rossz könyvtár kiválasztása problémákhoz vezet: a gyorsítótár mentése a Documents könyvtárba iCloud helyet pazarol és megsérti az Apple fájlrendszerre vonatkozó irányelveit.

swift
import Foundation

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

let fileURL = documentsURL.appendingPathComponent("notes.txt")
let text = "Содержимое файла"

// Atomi írás titkosítással
try text.write(
    to: fileURL,
    atomically: true,
    encoding: .utf8
)

FileManager — az elsődleges API fájlműveletekhez

A FileManager osztály teljes módszerkészletet biztosít a fájlok kezeléséhez iOS rendszeren. A FileManager.default egy szálbiztos szingleton, amely a legtöbb művelethez alkalmas. Az olyan metódusok, mint a fileExists(atPath:), createDirectory(at:withIntermediateDirectories:attributes:), copyItem(at:to:) és removeItem(at:) lefedik az alapszintű forgatókönyveket. Az 1 MB-nál nagyobb fájlműveleteket háttérszálon kell végrehajtani a DispatchQueue.global() segítségével. Nagy mennyiségek streameléséhez használja a FileHandle-t ahelyett, hogy a teljes fájlt a memóriába töltené.

swift
func readDocumentsFile(named fileName: String) -> String? {
    guard let docsURL = FileManager.default.urls(
        for: .documentDirectory,
        in: .userDomainMask
    ).first else { return nil }

    let fileURL = docsURL.appendingPathComponent(fileName)
    return try? String(contentsOf: fileURL)
}

Fájlrendszer a mobilalkalmazásokban: Scoped Storage Android rendszeren

Az Android 10 megjelenésével a Google bevezette a Scoped Storage funkciót — a fájlrendszer korlátozott hozzáférési modelljét. Egy alkalmazás csak a saját privát könyvtáraiban olvashat és írhat szabadon. Médiafájlokhoz (fényképek, videók, hang) a MediaStore API használatos a ContentResolver segítségével. Tetszőleges dokumentumokhoz a Storage Access Framework használatos az Intent ACTION_OPEN_DOCUMENT segítségével. Android 11+ rendszeren a külső tárhely gyökeréhez való közvetlen hozzáférés teljesen tilos, és minden fejlesztőnek az új API-kat kell használnia.

MediaStore API médiafájlokkal való munkához

MediaStore egy rendszer ContentProvider a médiafájlok eléréséhez az eszközön. A ContentResolver segítségével az alkalmazás a fájlok Uri-ját kéri a közvetlen elérési utak helyett. MediaStore.Files — minden fájltípushoz, Images — képekhez, Video — videókhoz, Audio — hangfelvételekhez. A megosztott könyvtárakba írás az insert() segítségével történik DISPLAY_NAME, MIME_TYPE és RELATIVE_PATH megadásával. A beszúrás után az alkalmazás kap egy Uri-t, amelyen keresztül a bájtok íródnak. A MIME típusok kulcsszerepet játszanak — a helytelen típus hibát okoz a fájl megnyitásakor.

kotlin
val contentValues = ContentValues().apply {
    put(MediaStore.MediaColumns.DISPLAY_NAME, "report.pdf")
    put(MediaStore.MediaColumns.MIME_TYPE, "application/pdf")
    put(MediaStore.MediaColumns.RELATIVE_PATH, "Documents/Reports")
}

val uri = contentResolver.insert(
    MediaStore.Files.getContentUri("external"),
    contentValues
)

uri?.let {
    contentResolver.openOutputStream(it)?.use { stream ->
        stream.write(pdfBytes)
    }
}

Storage Access Framework fájlok kiválasztásához

A SAF egységes felületet biztosít a fájlok kiválasztásához és létrehozásához futásidejű engedélyek nélkül. Intent ACTION_OPEN_DOCUMENT megnyitja a rendszer fájlkezelőjét Android rendszeren. A kiválasztás után az alkalmazás egy content:// Uri-t kap ideiglenes hozzáféréssel a FLAG_GRANT_READ_URI_PERMISSION segítségével. Az ACTION_CREATE_DOCUMENT lehetővé teszi a fájlok mentését a felhasználó által választott bármely külső tárhelyre. A SAF Android 5+ rendszeren működik, és hozzáférést biztosít a DocumentsProvider segítségével csatlakoztatott felhőszolgáltatók fájljaihoz.

kotlin
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
    addCategory(Intent.CATEGORY_OPENABLE)
    type = "*/*"
    putExtra(Intent.EXTRA_MIME_TYPES, arrayOf(
        "application/pdf",
        "text/plain"
    ))
}
startActivityForResult(intent, REQUEST_CODE)

Dokumentumválasztás mobilalkalmazásokban: rendszerválasztók

Mindkét platform beépített mechanizmusokat kínál a felhasználók számára a fájlok kiválasztásához. A dokumentumok a mobilalkalmazásokban rendszerválasztókon keresztül kerülnek továbbításra, amelyek ideiglenes hozzáférést biztosítanak egy fájlhoz állandó engedélyek nélkül. iOS rendszeren ez UIDocumentPickerViewController, Android rendszeren ACTION_OPEN_DOCUMENT. A mobilalkalmazásokban lévő dokumentumok kiválaszthatók mind a helyi tárhelyről, mind a felhőszolgáltatásokból. A felhasználó kifejezetten megadja a fájlt, és az alkalmazás egy Uri-t vagy URL-t kap korlátozott érvényességi idővel.

UIDocumentPickerViewController iOS rendszeren

UIDocumentPickerViewController megnyitja a Files App-ot, és lehetővé teszi egy vagy több dokumentum kiválasztását. Módok: importálás (másolás a homokozóba) és megnyitás (hozzáférés biztonsági hatókörű URL segítségével). Fájlok szűréséhez UTType típusok tömbje kerül átadásra — például .pdf és .plainText. Az URL fogadása után az alkalmazásnak meg kell hívnia a startAccessingSecurityScopedResource() függvényt az olvasás előtt és a stopAccessingSecurityScopedResource() függvényt a befejezés után. A stopAccessing elmulasztása rendszererőforrás-szivárgáshoz vezet. A mobilalkalmazásokban lévő dokumentumok iOS rendszeren megkövetelik az ideiglenes engedélyek kötelező felszabadítását a fájllal végzett munka befejezése után.

swift
let picker = UIDocumentPickerViewController(
    forOpeningContentTypes: [.pdf, .plainText]
)
picker.allowsMultipleSelection = true
picker.delegate = self
present(picker, animated: true)

// Hozzáférés felszabadítása a delegáltban
func documentPicker(
    _ controller: UIDocumentPickerViewController,
    didPickDocumentsAt urls: [URL]
) {
    guard let url = urls.first else { return }
    url.startAccessingSecurityScopedResource()
    defer { url.stopAccessingSecurityScopedResource() }
}

FileProvider és DocumentProvider Android rendszeren

FileProvider a ContentProvider alosztálya a fájlok biztonságos megosztásához az alkalmazások között. Ideiglenes content:// Uri-ket generál a megadott XML könyvtárakból származó fájlok alapján. Más alkalmazások a FLAG_GRANT_READ_URI_PERMISSION funkcióval rendelkező Intent segítségével kapnak hozzáférést. A DocumentProvider a FileProvider-tól eltérően fájlokat tesz közzé a SAF-ban, és lehetővé teszi más alkalmazások számára, hogy az Ön alkalmazásának tartalmát a fájlrendszer részeként böngésszék. A DocumentsProvider megvalósításához felül kell bírálnia a queryRoots(), queryChildDocuments() és openDocument() függvényeket, majd regisztrálnia kell az AndroidManifest.xml fájlban.

iCloud Drive és felhőalapú fájlszinkronizálás

A felhőszinkronizálás lehetővé teszi a felhasználók számára, hogy hozzáférjenek a dokumentumokhoz az összes eszközükön. A fájlrendszer a mobilalkalmazásokban egy felhőréteggel egészül ki: az iOS rendszeren lévő UIDocument automatikusan nyomon követi a változásokat és szinkronizálja azokat az iCloud segítségével. Android rendszeren hasonló funkciók építhetők a Google Drive API vagy a felhő gyökerekkel rendelkező DocumentsProvider segítségével. A fájlrendszer megértése a mobilfejlesztésben kritikus fontosságú a megbízható eszközök közötti szinkronizálás kiépítéséhez.

UIDocument — Szinkronizálás iOS rendszeren

UIDocument egy absztrakt osztály az iCloud dokumentumokkal való munkához. Automatikusan menti a változtatásokat, olvassa az adatokat és értesíti a delegáltat a frissítésekről. Írási ütközés esetén az NSFileVersion elérhető verziók listáját kínálja — a fejlesztő kiválaszthatja a legújabbat, vagy megjelenítheti a felhasználónak az ütközésfeloldási lehetőségeket. Az Ubiquity Container konfigurálása a projekt Capabilities részében kötelező az iCloud Drive-hoz. Az NSFileCoordinator és NSFilePresenter megakadályozzák az adatversenyeket többszálú vagy eszközök közötti egyidejű hozzáférés során.

Adatok biztonsági mentése és visszaállítása

Az iOS automatikusan tartalmazza a Documents könyvtárat az iCloud Backupban. Android esetén az Auto Backup for Apps működik — a rendszer a getFilesDir(), SharedPreferences és SQLite adatbázisok adatait menti a Google Drive-ba. A gyorsítótár és a külső fájlok nem kerülnek be a biztonsági mentésbe. Mindkét platform lehetővé teszi kivételek konfigurálását: iOS rendszeren az NSURLIsExcludedFromBackupKey segítségével, Android rendszeren a biztonsági mentési szabályok XML konfigurációjával. A személyes adatokat tartalmazó fájlok titkosítása kötelező — iOS rendszeren használja a NSDataWritingFileProtectionComplete, Android rendszeren a security-crypto könyvtárból az EncryptedFile osztályt.

ParaméteriOSAndroid
Alapértelmezett biztonsági mentésDocuments és LibrarygetFilesDir(), SharedPreferences, AB
Fájl kizárásaisExcludedFromBackupKeyXML biztonsági mentési szabályok (fullBackupContent)
TitkosításNSDataWritingFileProtectionCompleteEncryptedFile (security-crypto)
Felhő szinkronizálásUIDocument + iCloudGoogle Drive API + SAF
Automatikus visszaállításiCloud Restore telepítés utánAuto Backup újratelepítéskor

Gyakran ismételt kérdések

Mi az a Sandbox iOS rendszeren?

Sandbox egy elkülönített környezet minden alkalmazás számára iOS rendszeren. Az alkalmazás nem férhet hozzá más alkalmazások fájljaihoz anélkül, hogy rendszerválasztókat használna, mint például UIDocumentPickerViewController.

Mi az a Scoped Storage Android rendszeren?

Scoped Storage egy korlátozott fájlrendszer-hozzáférési modell Android 10+ rendszeren. Az alkalmazás közvetlenül csak a saját fájljait olvassa, média esetén MediaStore API-t, dokumentumok esetén Storage Access Framework-ot használ.

Hogyan válasszunk fájlt iOS rendszeren?

Használja a UIDocumentPickerViewController — a rendszerválasztót a dokumentumok kiválasztásához a Files App-ból vagy iCloud Drive-ból. A kiválasztás után egy biztonsági hatókörű URL-t kap ideiglenes hozzáféréssel.

Hogyan férhetünk hozzá fájlokhoz Android 11+ rendszeren?

Médiafájlok esetén használja a MediaStore API-t a ContentResolver segítségével a MIME típus megadásával. Tetszőleges dokumentumok esetén használja a Storage Access Framework-ot Intent ACTION_OPEN_DOCUMENT funkcióval.

Mi az a FileProvider Android rendszeren?

FileProvider a ContentProvider alosztálya a fájlok biztonságos megosztásához az alkalmazások között ideiglenes content:// Uri segítségével FLAG_GRANT_READ_URI_PERMISSION funkcióval.

Összefoglalás

  • Sandbox — az iOS elkülönített fájlrendszere, ahol egy alkalmazás csak a saját Documents, Caches és Library könyvtáraihoz férhet hozzá.
  • FileManager — az elsődleges API fájlműveletekhez iOS rendszeren. Nagy fájlokat a FileHandle segítségével olvasson háttérszálon.
  • Scoped Storage — a fájlrendszer modell Android 10+ rendszeren, amely a külső tárhelyhez való közvetlen hozzáférést MediaStore API-ra és SAF-re cseréli.
  • MediaStore API — egy rendszer ContentProvider a médiafájlokkal való munkához Android rendszeren. Az írás az insert() segítségével történik ContentValues paraméterekkel.
  • Storage Access Framework — egy univerzális dokumentumkiválasztó mechanizmus Android rendszeren ACTION_OPEN_DOCUMENT és ACTION_CREATE_DOCUMENT segítségével.
  • UIDocumentPickerViewController — az iOS rendszerválasztó, amely megnyitja a Files App-ot és az iCloud Drive-ot. Biztonsági hatókörű URL-ekkel működik.
  • FileProvider — egy mechanizmus a biztonságos fájlmegosztáshoz Android alkalmazások között ideiglenes content:// Uri és futásidejű engedélyek segítségével.

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