A mobileszköz fájlrendszere az adatok flash memóriában történő szervezésének, tárolásának és elnevezésének módja. A Android Developers, 2026 szerint a mobil operációs rendszerek hierarchikus könyvtárszerkezetet használnak, ahol minden alkalmazás egy elkülönített sandbox-ban fut. Ez az architektúra megakadályozza az adatokhoz való jogosulatlan hozzáférést és biztosítja a rendszer stabil működését több alkalmazás egyidejű futtatásakor.
Főbb pontok
Fájlrendszer az operációs rendszer szoftverkomponense, amely kezeli, hogy az adatok hogyan íródnak, olvasódnak és szerveződnek a fizikai adathordozón. Mobileszközökön a fájlrendszer kritikusan fontos funkciókat lát el: a flash memória területének kezelése, fájlokhoz való hozzáférés ellenőrzése engedélyek alapján, változtatások naplózása a hibák utáni helyreállításhoz, és az írás optimalizálása a NAND flash memória jellemzőinek figyelembevételével.
Ellentétben az asztali operációs rendszerekkel, a mobil fájlrendszereket a flash memória korlátozott újraírási ciklusainak figyelembevételével tervezik. A NAND cellák korlátozott számú törlési műveletet viselnek el — 3 000-től 10 000 ciklusig a TLC, illetve MLC memória esetében. A tároló élettartamának meghosszabbításához a fájlrendszerek wear leveling (kopáskiegyenlítő) mechanizmusokat és TRIM parancsokat alkalmaznak. A Samsung által kifejezetten flash memóriához fejlesztett F2FS figyelembe veszi a NAND tömb geometriáját és úgy helyezi el az adatokat, hogy minimalizálja a töredezettséget és a blokktörlési műveletek számát.
A modern mobileszközök több fájlrendszer kombinációját használják. A belső memória (/data partíció) Androidon EXT4 vagy F2FS, iOS-en APFS formátumú. Az SD kártyák hagyományosan exFAT-ot használnak a 4 GB-nál nagyobb fájlok támogatásához vagy FAT32-t a maximális kompatibilitásért. A /system partíció Androidon gyakran csak olvashatóként van csatolva, és EXT4 vagy EROFS (Enhanced Read-Only File System) — a Huawei által a rendszerpartíció méretének csökkentésére kifejlesztett tömörített fájlrendszer — használ.
Könyvtárhierarchia Android a Linux-struktúrán alapul, a gyökérrel a / mappában. Minden partíciónak saját fájlrendszere, hozzáférési jogai és rendeltetése van. Egy alkalmazás csak korlátozott számú könyvtárhoz férhet hozzá — a többi root jogokkal védett.
| Útvonal | Partíció | Fájlrendszer | Hozzáférés az alkalmazás számára |
|---|---|---|---|
| /data | Userdata | F2FS / EXT4 | Csak saját sandbox |
| /system | System | EROFS / EXT4 | Csak olvasás (root) |
| /sdcard | External | exFAT / FAT32 | Engedéllyel |
| /cache | Cache | EXT4 | Csak root |
| /vendor | Vendor | EROFS / EXT4 | Csak olvasás (root) |
A /data partíció a fő partíció a felhasználói adatok, telepített alkalmazások és beállításaik tárolására. Minden alkalmazás saját könyvtárat kap a /data/data/<package_name>/ útvonalon. Ezen könyvtáron belül a rendszer automatikusan alkönyvtárakat hoz létre: files/ az alkalmazás fájljaihoz, cache/ az ideiglenes fájlokhoz, databases/ az SQLite adatbázisokhoz, shared_prefs/ a SharedPreferences számára. A könyvtárhoz való hozzáférési jogok az alkalmazás telepítésekor kerülnek beállításra, és root hozzáférés nélkül nem módosíthatók. A /data partíció a legtöbb modern eszközön F2FS formátumú, ami akár 40%-kal magasabb véletlen írási sebességet biztosít az EXT4-hez képest.
A /system partíció tartalmazza az operációs rendszert, a rendszeralkalmazásokat és könyvtárakat. Ez a partíció csak olvashatóként van csatolva, hogy megakadályozza a rendszerfájlok véletlen vagy rosszindulatú módosítását. Az Android 10+ és Project Treble rendszerű eszközökön a /system partíció dinamikus, és OTA csomagokon keresztül frissíthető teljes újraflashelés nélkül. Az alkalmazások számára a /system partíció nem elérhető — egy írási kísérlet SecurityException kivételt vált ki. Az alkalmazások azonban olvashatnak bizonyos fájlokat a /system-ből, például rendszerbetűtípusokat és konfigurációs fájlokat, ha rendelkeznek a megfelelő engedélyekkel.
A /sdcard csatolási pont egy szimbolikus hivatkozás az emulált vagy fizikai külső tároló partíciójára. SD kártya nélküli eszközökön a /sdcard a /data-n belüli alpartícióra mutat, amely megosztott hozzáférésre van elkülönítve. Ez a partíció látható a felhasználó számára, amikor az eszköz MTP protokollon keresztül csatlakozik a számítógéphez. Az alkalmazások a /sdcard-hoz a READ_EXTERNAL_STORAGE és WRITE_EXTERNAL_STORAGE engedélyeken keresztül férnek hozzá, Android 10-től kezdve pedig a Scoped Storage-on keresztül a MediaStore API használatával. A /sdcard mérete általában az eszköz flash memóriája teljes térfogatának 60–80%-a, a többi a /data partíció számára van fenntartva.
iOS-en a fájlrendszer az alkalmazások Sandbox konténerein keresztül van szervezve. Minden alkalmazás egy elkülönített könyvtárat kap, amelyhez a hozzáférés az XNU kernel szintjén korlátozott. A felhasználói partíció az iOS 10.3-ban bevezetett APFS (Apple File System) fájlrendszert használja. Az APFS támogatja a pillanatképeket, a fájlklónozást és a fájlszintű titkosítást, ami optimálissá teszi mobileszközökhöz.
Az iOS Sandbox konténer négy fő könyvtárat tartalmaz: Documents, Library, tmp és SystemData. Minden könyvtárnak saját biztonsági mentési politikája, adatmegőrzési ideje és hozzáférési szintje van. A Documents automatikusan bekerül az iCloud és iTunes biztonsági mentésbe. A Library alkönyvtárakat tartalmaz: Caches (nem kerül biztonsági mentésre), Preferences (biztonsági mentésre kerül) és Application Support (biztonsági mentésre kerül). A tmp könyvtár ideiglenes fájlok számára készült — az iOS törölheti ezeket, ha kevés a hely, és nem kerül biztonsági mentésbe. A SystemData-t maga a rendszer használja, és az alkalmazás számára nem elérhető a szabványos API-kon keresztül.
let fm = FileManager.default
let documents = fm.urls(
for: .documentDirectory,
in: .userDomainMask
).first!
let caches = fm.urls(
for: .cachesDirectory,
in: .userDomainMask
).first!
let appSupport = fm.urls(
for: .applicationSupportDirectory,
in: .userDomainMask
).first!
A Sandbox konténer minden könyvtárának saját védelmi osztálya (protection class) van. Az iOS négy osztályt támogat: Complete Protection (a fájl nem elérhető zárolt eszköz esetén), Protected Unless Open (a már megnyitott fájlok zároláskor is elérhetők), Protected Until First User Authentication (a fájlok az első feloldás után elérhetők) és No Protection (a fájlok mindig elérhetők az eszköz rendszerindítása után). Alapértelmezés szerint a Documents és Library összes fájlja a Complete Protection osztályt kapja, ami garantálja a felhasználói adatok maximális védelmét. Fájl létrehozásakor explicit módon megadható más védelmi osztály, ha egy háttéralkalmazásnak zárolt eszköz esetén is hozzá kell férnie az adatokhoz.
A fájlokhoz való hozzáférés kezelése a mobileszközökön kulcsfontosságú különbség az Android és iOS között. Az Android a klasszikus Linux hozzáférési jogi modellt (olvasás, írás, végrehajtás) használja az alkalmazások elkülönítésére szolgáló kiterjesztésekkel. Az iOS szigorúbb Sandbox modellt alkalmaz, ahol minden alkalmazás egy elkülönített konténerben fut, és különleges mechanizmusok nélkül nem fér hozzá más alkalmazások fájljaihoz.
Androidon minden alkalmazás külön UID-vel (User ID) indul. Az alkalmazás által a sandbox-ában létrehozott összes fájl ehhez az UID-hez tartozik, és nem látható más alkalmazások számára. A megosztott könyvtárakhoz (külső tároló) való hozzáféréshez az alkalmazásnak kérnie kell a READ_EXTERNAL_STORAGE és WRITE_EXTERNAL_STORAGE engedélyeket. Android 11-től kezdve az engedélyeket futásidőben kell kérni, és a targetSdkVersion 30+ alkalmazásnak más alkalmazások fájljaihoz való hozzáféréshez SAF-et kell használnia. Az engedélymodell megsértése SecurityException kivételt eredményez, amelyet a szabványos try-catch blokk kezel. A Google Play automatikusan ellenőrzi az alkalmazás megfelelését az engedélypolitikának a közzététel előtt.
if (ContextCompat.checkSelfPermission(
context,
Manifest.permission.READ_EXTERNAL_STORAGE
) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(
activity,
arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE),
REQUEST_CODE
)
}
iOS Sandbox az XNU kernel szintjén van implementálva, és nem engedi az alkalmazásnak, hogy elhagyja a konténerét. Még ha az alkalmazás hozzá is fér egy külső fájl URI-jához a Document Picker-en keresztül, az operációs rendszer egy ideiglenes másolatot hoz létre az alkalmazás konténerében, ahelyett hogy közvetlen hozzáférést biztosítana az eredetihez. A fájlok alkalmazások közötti megosztásához az iOS a Share Sheet és UIActivityViewController mechanizmusokat használja, amelyek átmásolják a fájlt az egyik alkalmazás konténeréből a másikéba. A hitelesítő adatok (tokenek, jelszavak, kulcsok) biztonságos tárolásához az iOS Keychain-t biztosít — egy titkosított tárhelyet, amely a kernel szintjén elérhető a rendszer számára. A Keychain nem része a Sandbox konténernek, és egy külön securityd démon kezeli, ami további védelmi réteget biztosít még az alkalmazás kompromittálódása esetén is.
A fájlrendszer kiválasztása közvetlenül befolyásolja az adattárolás teljesítményét és megbízhatóságát. Minden fájlrendszernek saját architektúrája, optimalizálásai és korlátai vannak. A fejlesztő számára hasznos megérteni ezeket a különbségeket, hogy előre jelezze az alkalmazás viselkedését különböző eszközökön.
Az alkalmazások fejlesztésekor vegye figyelembe, hogy a különböző fájlrendszerek eltérő fájlnév-hossz korlátozásokkal (255 bájt EXT4 és F2FS esetén, 255 Unicode karakter APFS esetén), maximális fájlmérettel és speciális karakterek támogatásával rendelkeznek. Például az APFS lehetővé teszi a Unicode karaktereket a fájlnevekben, beleértve az emodzsikat, míg az EXT4 ASCII-ra korlátozott. Ha az alkalmazás különböző nyelveken elnevezett fájlokat hoz létre, tesztelje a működést az összes céleszközön — az APFS-en helyesen létrehozott fájlnév az EXT4-en csonkolódhat.
Megbízható munka a mobileszköz fájlrendszerével néhány kulcsszabály betartását igényli. Ezek a fejlesztők tipikus hibáinak elemzésén és a hivatalos dokumentáció ajánlásain alapulnak.
context.filesDir Androidon, NSSearchPathForDirectoriesInDomains iOS-en. A kemény útvonalak változnak az operációs rendszer verziói és eszközök közöttFile.getUsableSpace()-et Androidon és a URLResourceValues.volumeAvailableCapacityKey-t iOS-en. Figyelmeztesse a felhasználót, ha nincs elég szabad helyisExcludedFromBackup segítségével. Androidon részesítse előnyben a cacheDir-t az ideiglenes fájlokhozFordítson különös figyelmet a platformok közötti különbségekre. A fájlok útvonalai Androidon perjellel épülnek fel (/data/data/.../files/), iOS-en — URL séma segítségével (file:///var/mobile/.../Documents/). Ha alkalmazása többplatformos keretrendszert (Flutter, React Native, Kotlin Multiplatform) használ, egységesítse a fájlműveleteket platformadaptereken keresztül. Például a Flutter biztosítja a path_provider csomagot, amely platformfüggő kód írása nélkül adja vissza a helyes útvonalat a Documents vagy filesDir mappához mindkét platformon. Soha ne fűzze össze az útvonalakat sztringműveletekkel — használja a File.join() vagy URL.appendingPathComponent() függvényeket, amelyek helyesen kezelik az elválasztókat a különböző platformokon.
Gyakran Ismételt Kérdések
A modern Android-eszközökön (11+) a /data partícióhoz F2FS-t használnak. Régebbi eszközökön — EXT4. A /system partíció EROFS-t vagy EXT4-et használ. Az SD kártyákat exFAT vagy FAT32 formátumban formázzák a kapacitástól függően.
APFS támogatja a pillanatképeket, fájlklónozást, fájlszintű titkosítást és ellenőrző összegeket. Az EXT4 naplózással és szélesebb kompatibilitással rendelkezik. Az APFS SSD-kre van optimalizálva, az EXT4 egy univerzális fájlrendszer.
Használja a FileManager.default.urls(for: .documentDirectory, in: .userDomainMask) függvényt. A metódus URL-ek tömbjét adja vissza, az első elem az alkalmazás Sandbox konténerének fő Documents könyvtára.
Scoped Storage egy Android 10-ben bevezetett hozzáférési modell, amely korlátozza a közvetlen hozzáférést a fájlrendszerhez. Az alkalmazások engedély nélkül csak saját fájljaikat olvashatják. A megosztott médiafájlok eléréséhez a MediaStore API-t használják.
exFAT előnyösebb a 32 GB-nál nagyobb kapacitású SD kártyákhoz, mivel támogatja a 4 GB-nál nagyobb fájlokat. A FAT32 maximális kompatibilitást biztosít a régebbi eszközökkel, de a fájlméretet 4 GB-ra korlátozza.
Összefoglalás
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.
Olvassa el is