Temporary Directory — mi ez, ideiglenes fájlok és tárhelykezelés

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

Temporary Directory (tmp) — egy könyvtár az iOS alkalmazás homokozójában, amely nagyon rövid idejű adatok tárolására szolgál, amelyek csak az aktuális alkalmazásmunkamenetben szükségesek. Az Apple File System Programming Guide (2024) szerint a rendszer minden alkalmazás befejezésekor vagy az eszköz újraindításakor kiürítheti a tmp-t. A Caches Directory-val ellentétben a tmp ideiglenes fájljai nem az indítások közötti tárolásra szolgálnak — a fejlesztőnek explicit módon el kell távolítania azokat használat után, hogy ne foglaljanak helyet a lemezen.

Főbb pontok

  • Temporary Directory — könyvtár azon adatok számára, amelyek csak az aktuális alkalmazásmunkamenetben szükségesek.
  • Az iOS rendszer kiürítheti a tmp-t az eszköz újraindításakor vagy az alkalmazás befejezésekor.
  • A tmp-ből származó fájlok nem kerülnek be az iCloud és iTunes biztonsági mentésekbe.
  • A tmp elérési útja a NSTemporaryDirectory() függvénnyel érhető el Swift-ben vagy Objective-C-ben.
  • A fejlesztőnek magának kell eltávolítania a fájlokat a tmp-ből használat után.

Mi az a Temporary Directory iOS-ben?

Temporary Directory (más néven tmp) — egy könyvtár az iOS alkalmazás homokozójában, amely az aktuális munkamenetre korlátozott élettartamú adatok tárolására szolgál. Ez a legrövidebb idejű tároló az összes homokozó könyvtár közül.

Az iOS a tmp-t köztes fájltárolást igénylő műveletekhez biztosítja: fájl letöltése a Documents-ba helyezés előtt, ideiglenes másolat készítése exportálás előtt, adatfolyamok pufferelése. A művelet befejezése után az ideiglenes fájlokat el kell távolítani.

Az Apple Developer Documentation (2024) szerint a tmp könyvtár egyedi, mert elérési útja változhat az alkalmazás indításai között. Az iOS minden indításkor új útvonalat generál a tmp-hez — ez garantálja, hogy az előző munkamenet adatai véletlenül se olvashatók ki. A fejlesztő soha ne mentse el a tmp elérési útját az indítások között.

Fontos: a Caches Directory-val ellentétben, ahol az adatok több indítást is túlélhetnek, a tmp nem garantálja az adatok tárolását a munkamenetek között hosszú távon. Ez a legmegbízhatóbb mód a tényleg ideiglenes adatok tárolására.

Hogyan szerezhető meg a Temporary Directory elérési útja

Swift-ben a tmp elérési útjának megszerzéséhez az NSTemporaryDirectory() globális függvényt vagy a FileManager.temporaryDirectory-t használjuk. Ez a legegyszerűbb API az összes homokozó könyvtár közül.

swift
import Foundation

// 1. lehetőség: NSTemporaryDirectory()
let tempDir = NSTemporaryDirectory()
let tempFile = (tempDir as NSString)
    .appendingPathComponent("export_temp.pdf")

// 2. lehetőség: FileManager.temporaryDirectory (URL)
let tempURL = FileManager.default.temporaryDirectory
let exportURL = tempURL.appendingPathComponent("export_temp.pdf")

Az Objective-C ugyanazt a globális függvényt használja: NSTemporaryDirectory(). Az eredmény — egy karakterlánc az alkalmazás ideiglenes könyvtárának teljes elérési útjával.

objective-c
@import Foundation;

NSString *tempDir = NSTemporaryDirectory();
NSString *tempFile = [tempDir stringByAppendingPathComponent:@"temp_data.bin"];

A legfontosabb különbség a többi könyvtárhoz képest: az NSTemporaryDirectory() nem igényli a tartomány vagy maszk megadását — ez egy globális függvény. Az út azonban változhat a következő indításkor, ezért soha ne mentse el a UserDefaults vagy más állandó tárolóba.

Milyen adatokat tároljunk a tmp-ben

Temporary Directory szigorúan meghatározott forgatókönyvekhez készült. A fejlesztők gyakran összekeverik a tmp-t a Caches-szel, és olyan adatokat helyeznek el a tmp-ben, amelyeknek több mint egy munkamenetet kellene élniük. Nézzük meg a helyes használati eseteket.

Köztes fájlok exportáláskor

Fájlok amelyek az adatexportálás során jönnek létre: a jelentés ideiglenes másolata e-mail küldés előtt, tömörített archívum letöltés előtt, formátumkonverzió köztes fájlja. Az exportálás befejezése után a fájlt el kell távolítani.

Adatfolyamok pufferelése

Ideiglenes pufferek audio, video vagy adatfolyamok valós idejű feldolgozásához. Például hangfelvétel az állandó tárolóba mentés előtt, vagy video adatfolyam pufferelése streaming közben.

ForgatókönyvKönyvtárIndoklás
Exportálás PDF küldés előtttmpFájl nem szükséges küldés után
Gyorsítótár képekCachesHasznos munkamenetek között
Letöltés fájl áthelyezés előtttmpKöztes tárolás
Naplók munkamenettmpCsak a munkamenetben aktuális
Szerkesztés dokumentumtmpVáltozat mentés előtt

Ha az adatok csak itt és most szükségesek — használja a tmp-t. Ha a következő munkamenetben is hasznosak lehetnek — használja a Caches-t. Ha az adatvesztés elfogadhatatlan — használja a Documents-t.

Az ideiglenes fájlok életciklusa

Az iOS másképpen kezeli a tmp életciklusát, mint a homokozó többi könyvtárát. Ennek az életciklusnak a megértése kritikus fontosságú a fájltárolás helyes megtervezéséhez az alkalmazásban.

Minden egyes indításkor az iOS új elérési útvonalat rendelhet a tmp-hez. Az előző útvonal elérhetetlenné válik, bár a fizikai fájlok az eszköz újraindításáig a lemezen maradhatnak. Pontosan emiatt az Apple határozottan javasolja, hogy ne mentse a tmp elérési útvonalát a munkamenetek között.

Az Apple Tech Note TN2150 (2024) szerint a rendszer a következő esetekben ürítheti ki a tmp-t: az eszköz újraindításakor, a lemezterüelem elérésekor, az alkalmazás kiürítésekor (Offload). A Caches-szel ellentétben a tmp nem alkalmas adatok tárolására több indításon keresztül sem — ez a homokozó legkevésbé megbízható tárolója.

A fejlesztő köteles explicit módon eltávolítani az ideiglenes fájlokat a művelet befejezése után a FileManager.removeItem(at:) segítségével. Az el nem távolított fájlok a tmp-ben felhalmozódnak és helyet foglalnak a lemezen — az iOS nem garantálja automatikus törlésüket a közeljövőben.

Temporary Directory vs Caches Directory

A tmp és a Caches összehasonlítása segít a fejlesztőknek a helyes döntés meghozatalában a tároló könyvtár kiválasztásakor. A választásban elkövetett hiba vagy az adatok idő előtti elvesztéséhez, vagy indokolatlan helypazarláshoz vezethet.

ParaméterTemporary DirectoryCaches Directory
ÉlettartamCsak aktuális munkamenetMunkamenetek között (garancia nélkül)
ÚtváltozásMinden indításkor változhatStabil útvonal
Automatikus törlésÚjraindításkor, kiürítéskorHelyhiány esetén
Eltávolítás fejlesztő általKötelező művelet utánJavasolt limit túllépésekor
HasználatKöztes műveletekÁllandó gyorsítótár

Gyakorlati szabály: válassza a tmp-t azon adatokhoz, amelyek a létrehozás után néhány másodpercen vagy percen belül törlődnek. Válassza a Caches-t azon adatokhoz, amelyeket érdemes néhány órán vagy napon át megtartani a munkamenetek között, de újra létrehozhatók.

Legjobb gyakorlatok a tmp-vel való munkához

A Temporary Directory-val való munka fegyelmet igényel: mivel a tmp-ben lévő adatok rövid életűek, és felhalmozódásuk indokolatlan helypazarláshoz vezethet, a fejlesztőnek be kell tartania néhány alapvető gyakorlatot.

Mindig távolítsa el a fájlokat használat után

A FileManager.removeItem(at:) hívást azonnal meg kell tenni az ideiglenes fájllal végzett művelet befejezése után. Használja a defer-t Swift-ben a garatált eltávolításhoz, még hiba esetén is.

swift
import Foundation

let tempURL = FileManager.default
    .temporaryDirectory
    .appendingPathComponent("upload_temp.dat")

defer {
    try? FileManager.default.removeItem(at: tempURL)
}

// Munka ideiglenes fájllal
try "temporary data".write(to: tempURL, atomically: true)
// ... fájlművelet ...
// a defer a hatáskörből való kilépéskor fut le

Ne használja a tmp-t hosszú élettartamú adatokhoz

Ha az adatokra a létrehozás után egy órával is szükség lehet — mentse azokat a Caches-be vagy Application Support-ba. A tmp percnyi műveletekre való, nem tárolásra.

E szabályok betartása garantálja, hogy az ideiglenes fájlok nem halmozódnak fel, a lemezterüelet hatékonyan használják, és az alkalmazás megfelelően kezeli az iOS fájlrendszer bármely tisztítási forgatókönyvét.

Gyakran Ismételt Kérdések

Megváltozhat a Temporary Directory elérési útvonala az alkalmazás futása közben?

Általában az útvonal nem változik egy munkameneten belül, de az iOS nem ad garanciát. Ritka esetekben a rendszer megváltoztathatja a tmp-t, amikor az alkalmazás a háttérből aktív állapotba kerül. Ezért az Apple azt javasolja, hogy minden híváskor az NSTemporaryDirectory()-n keresztül kérje le a tmp elérési útvonalát, ahelyett, hogy változóban tárolná.

Mi történik, ha nem távolítom el a fájlokat a tmp-ből?

Fájlok fognak felhalmozódni és helyet foglalni a lemezen. Az iOS kiürítheti a tmp-t az eszköz újraindításakor, de addig az alkalmazás feleslegesen foglalja a lemezterüelet. Jelentős felhalmozódás esetén a felhasználó láthatja a tárhely beállításokban, hogy az alkalmazás sok helyet foglal.

Alkalmas a tmp az ideiglenes adatok titkosítására?

Igen, használhatja a DataProtectionType-t NSFileProtectionComplete-tel az érzékeny adatokat tartalmazó ideiglenes fájlokhoz. Ne feledje azonban: ha a fájl csak az aktuális munkamenetben kerül beolvasásra, majd törlődik — a titkosítás felesleges lehet. Ítélje meg a titkosítás szükségességét az adatok típusa alapján.

Hogyan hozhatok létre egyedi fájlnevet a tmp-ben ütközések nélkül?

Használja a ProcessInfo.processInfo.globallyUniqueString-t egyedi azonosító generálásához vagy az UUID().uuidString-t. A FileManager rendelkezik az urlForCreatingTemporaryFile metódussal is, amely automatikusan egyedi nevet generál a tmp-ben. Ez garantálja az ütközések hiányát párhuzamos íráskor.

Befolyásolja a tmp mérete az App Store-értékelést?

Közvetve — igen. Az Apple figyelmet fordít az alkalmazás által a lemezen tárolt adatok összméretére. Ha a tmp gigabájtnyi el nem távolított fájlt tartalmaz, az értékelő elutasíthatja az alkalmazást. Az ajánlott korlát a tmp számára — legfeljebb 100 MB bármely pillanatban. Rendszeresen tisztítsa a tmp-t és ellenőrizze a méretét a FileManager segítségével.

Összefoglaló

  • Temporary Directory (tmp) — könyvtár azon adatok számára, amelyek élettartama az aktuális alkalmazásmunkamenetre korlátozódik.
  • A tmp elérési útvonala változhat az indítások között — ne mentse állandó tárolóba.
  • A rendszer kiürítheti a tmp-t az eszköz újraindításakor vagy az alkalmazás kiürítésekor.
  • A tmp-ből származó fájlok nem kerülnek be az iCloud és iTunes biztonsági mentésekbe.
  • A Caches Directory-val ellentétben a tmp munkamenetek közötti tárolásra nem alkalmas.
  • A fejlesztőnek explicit módon el kell távolítania az ideiglenes fájlokat a FileManager.removeItem segítségével.
  • Használja a defer-t Swift-ben az ideiglenes fájlok garantált eltávolításához a művelet bármely kimenetele esetén.

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