Temporary Directory — یہ کیا ہے، عارضی فائلیں اور اسٹوریج کا انتظام

مصنف: IT Sectr اشاعت: 2026-07-10 مطالعے کا وقت: 10 منٹ

Temporary Directory (tmp) iOS ایپ سینڈ باکس میں ایک ڈائریکٹری ہے جو انتہائی قلیل مدتی ڈیٹا کو ذخیرہ کرنے کے لیے ہے جو صرف ایپ کے موجودہ سیشن میں درکار ہوتا ہے۔ Apple File System Programming Guide (2024) کے مطابق، سسٹم ہر ایپ کے ختم ہونے یا ڈیوائس کے ری اسٹارٹ پر tmp کو صاف کر سکتا ہے۔ Caches Directory کے برعکس، tmp میں عارضی فائلیں لانچوں کے درمیان برقرار رہنے کے لیے نہیں ہوتیں — ڈویلپر کو ڈسک کی جگہ ضائع نہ کرنے کے لیے استعمال کے بعد انہیں واضح طور پر حذف کرنا چاہیے۔

اہم نکات

  • Temporary Directory — ڈائریکٹری صرف موجودہ ایپ سیشن میں درکار ڈیٹا کے لیے۔
  • iOS ڈیوائس ری اسٹارٹ یا ایپ کے ختم ہونے پر tmp کو صاف کر سکتا ہے۔
  • tmp کی فائلیں iCloud اور iTunes بیک اپ میں شامل نہیں ہوتیں۔
  • tmp کا راستہ Swift یا Objective-C میں NSTemporaryDirectory() کے ذریعے حاصل کیا جاتا ہے۔
  • ڈویلپر کو استعمال کے بعد tmp سے فائلیں دستی طور پر حذف کرنی چاہئیں۔

iOS میں Temporary Directory کیا ہے؟

Temporary Directory (جسے tmp بھی کہا جاتا ہے) iOS ایپ سینڈ باکس کے اندر ایک ڈائریکٹری ہے جو ایسے ڈیٹا کو ذخیرہ کرنے کے لیے ڈیزائن کی گئی ہے جس کی زندگی کا دورانیہ موجودہ سیشن تک محدود ہے۔ یہ تمام سینڈ باکس ڈائریکٹریوں میں سب سے قلیل مدتی اسٹوریج ہے۔

iOS ان کاموں کے لیے tmp فراہم کرتا ہے جن میں درمیانی فائل اسٹوریج کی ضرورت ہوتی ہے: Documents میں منتقل کرنے سے پہلے فائل ڈاؤن لوڈ کرنا، برآمد کرنے سے پہلے عارضی کاپی بنانا، اسٹریمنگ ڈیٹا بفر کرنا۔ کام مکمل ہونے کے بعد، عارضی فائلوں کو حذف کر دینا چاہیے۔

Apple Developer Documentation (2024) کے مطابق، tmp ڈائریکٹری منفرد ہے کیونکہ اس کا راستہ ایپ لانچوں کے درمیان تبدیل ہو سکتا ہے۔ iOS ہر لانچ پر tmp کے لیے ایک نیا راستہ بناتا ہے — یہ یقینی بناتا ہے کہ پچھلے سیشن کا ڈیٹا غلطی سے نہ پڑھا جائے۔ ڈویلپر کو کبھی بھی tmp راستہ لانچوں کے درمیان محفوظ نہیں کرنا چاہیے۔

اہم: Caches Directory کے برعکس، جہاں ڈیٹا کئی لانچوں تک زندہ رہ سکتا ہے، tmp طویل مدت میں سیشنوں کے درمیان ڈیٹا کو برقرار رکھنے کی ضمانت نہیں دیتا۔ یہ واقعی عارضی ڈیٹا کو ذخیرہ کرنے کا سب سے قابل اعتماد طریقہ ہے۔

Temporary Directory کا راستہ کیسے حاصل کریں

Swift میں، tmp کا راستہ حاصل کرنے کے لیے عالمی فنکشن NSTemporaryDirectory() یا FileManager.temporaryDirectory استعمال کیا جاتا ہے۔ یہ تمام سینڈ باکس ڈائریکٹریوں میں سب سے آسان API ہیں۔

swift
import Foundation

// Option 1: NSTemporaryDirectory()
let tempDir = NSTemporaryDirectory()
let tempFile = (tempDir as NSString)
    .appendingPathComponent("export_temp.pdf")

// Option 2: FileManager.temporaryDirectory (URL)
let tempURL = FileManager.default.temporaryDirectory
let exportURL = tempURL.appendingPathComponent("export_temp.pdf")

Objective-C اسی عالمی فنکشن NSTemporaryDirectory() کا استعمال کرتا ہے۔ نتیجہ ایک سٹرنگ ہے جس میں ایپ کی عارضی ڈائریکٹری کا مکمل راستہ ہوتا ہے۔

objective-c
@import Foundation;

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

دیگر ڈائریکٹریوں سے ایک اہم فرق: NSTemporaryDirectory() کو ڈومین یا سرچ ماسک بتانے کی ضرورت نہیں ہے — یہ ایک عالمی فنکشن ہے۔ تاہم، اگلے لانچ پر راستہ تبدیل ہو سکتا ہے، لہٰذا اسے کبھی بھی UserDefaults یا کسی اور مستقل اسٹوریج میں محفوظ نہ کریں۔

tmp میں کون سا ڈیٹا ذخیرہ کریں

Temporary Directory سختی سے متعین منظرناموں کے ایک سیٹ کے لیے ہے۔ ڈویلپر اکثر tmp کو Caches سمجھ لیتے ہیں، tmp میں وہ ڈیٹا ڈال دیتے ہیں جسے ایک سیشن سے زیادہ زندہ رہنا چاہیے۔ آئیے صحیح استعمال کے معاملات دیکھتے ہیں۔

برآمد کرتے وقت درمیانی فائلیں

فائلیں جو ڈیٹا برآمد کرنے کے عمل میں بنتی ہیں: ای میل بھیجنے سے پہلے رپورٹ کی عارضی کاپی، اپ لوڈ کرنے سے پہلے کمپریسڈ آرکائیو، فارمیٹ تبدیل کرنے کی درمیانی فائل۔ برآمد مکمل ہونے کے بعد، فائل کو حذف کر دینا چاہیے۔

اسٹریمنگ ڈیٹا بفر کرنا

آڈیو، ویڈیو یا اسٹریمنگ ڈیٹا ریکارڈ کرنے کے لیے عارضی بفر جو ریئل ٹائم میں پروسیس ہوتا ہے۔ مثال کے طور پر، مستقل اسٹوریج میں محفوظ کرنے سے پہلے آواز کی ریکارڈنگ، یا اسٹریمنگ کے دوران ویڈیو اسٹریم بفر کرنا۔

منظرنامہڈائریکٹریوجہ
بھیجنے سے پہلے PDF برآمدtmpبھیجنے کے بعد فائل کی ضرورت نہیں
تصاویر کیشCachesسیشنوں کے درمیان مفید
منتقل کرنے سے پہلے فائل ڈاؤن لوڈtmpدرمیانی اسٹوریج
سیشن لاگزtmpصرف سیشن میں متعلقہ
دستاویز ترمیمtmpمحفوظ کرنے سے پہلے ورژن

اگر ڈیٹا صرف یہاں اور ابھی چاہیے — tmp استعمال کریں۔ اگر اگلے سیشن میں مفید ہو سکتا ہے — Caches استعمال کریں۔ اگر ڈیٹا کا نقصان ناقابل قبول ہے — Documents استعمال کریں۔

عارضی فائلوں کا لائف سائیکل

iOS tmp کے لائف سائیکل کو دوسرے سینڈ باکس ڈائریکٹریوں سے مختلف طریقے سے منظم کرتا ہے۔ اس چکر کو سمجھنا ایپ میں مناسب فائل اسٹوریج ڈیزائن کرنے کے لیے بہت ضروری ہے۔

ہر لانچ پر، iOS tmp کے لیے ایک نیا راستہ مختص کر سکتا ہے۔ پچھلا راستہ ناقابل رسائی ہو جاتا ہے، اگرچہ فزیکل فائلیں ڈیوائس کے ری اسٹارٹ ہونے تک ڈسک پر رہ سکتی ہیں۔ یہی وجہ ہے کہ Apple سیشنوں کے درمیان tmp راستہ محفوظ نہ کرنے کی سختی سے سفارش کرتا ہے۔

Apple Tech Note TN2150 (2024) کے مطابق، سسٹم مندرجہ ذیل صورتوں میں tmp کو صاف کر سکتا ہے: ڈیوائس ری اسٹارٹ، ڈسک کی جگہ کی حد تک پہنچنا، ایپ آف لوڈ (Offload)۔ Caches کے برعکس، tmp کئی لانچوں کے درمیان بھی ڈیٹا ذخیرہ کرنے کے لیے نہیں ہے — یہ سینڈ باکس میں سب سے کم قابل اعتماد اسٹوریج ہے۔

ڈویلپر کو FileManager.removeItem(at:) استعمال کرکے کام مکمل کرنے کے بعد عارضی فائلوں کو واضح طور پر حذف کرنا چاہیے۔ tmp میں نہ حذف کی گئی فائلیں جمع ہوتی ہیں اور ڈسک کی جگہ ضائع کرتی ہیں — iOS مستقبل قریب میں ان کی خودکار صفائی کی ضمانت نہیں دیتا۔

Temporary Directory بمقابلہ Caches Directory

tmp اور Caches کا موازنہ ڈویلپرز کو اسٹوریج کے لیے ڈائریکٹری منتخب کرتے وقت صحیح فیصلہ کرنے میں مدد کرتا ہے۔ غلط انتخاب یا تو قبل از وقت ڈیٹا کے نقصان یا غیر ضروری جگہ کے استعمال کا باعث بن سکتا ہے۔

پیرامیٹرTemporary DirectoryCaches Directory
زندگی کا دورانیہصرف موجودہ سیشنسیشنوں کے درمیان (بغیر ضمانت)
راستے کی تبدیلیہر لانچ پر تبدیل ہو سکتا ہےمستحکم راستہ
خودکار صفائیریبوٹ پر، آف لوڈ پرجگہ کم ہونے پر
ڈویلپر کا حذف کرناکام کے بعد لازمیحد سے تجاوز کرنے پر تجویز کردہ
استعمالدرمیانی کارروائیاںمستقل کیش

ایک عملی اصول: ان ڈیٹا کے لیے tmp منتخب کریں جو تخلیق کے بعد سیکنڈوں یا منٹوں میں حذف ہو جائیں گے۔ ان ڈیٹا کے لیے Caches منتخب کریں جنہیں سیشنوں کے درمیان گھنٹوں یا دنوں تک رکھنا مفید ہے لیکن دوبارہ بنایا جا سکتا ہے۔

tmp کے ساتھ کام کرنے کے بہترین طریقے

Temporary Directory کے ساتھ کام کرنے میں نظم و ضبط کی ضرورت ہے: چونکہ tmp میں ڈیٹا قلیل مدتی ہوتا ہے اور اس کا جمع ہونا جگہ کے ضیاع کا باعث بن سکتا ہے، ڈویلپرز کو کئی اہم طریقوں پر عمل کرنا چاہیے۔

استعمال کے بعد ہمیشہ فائلیں حذف کریں

FileManager.removeItem(at:) کو عارضی فائل کے ساتھ کام مکمل کرنے کے فوراً بعد کال کیا جانا چاہیے۔ غلطی ہونے پر بھی حذف کرنے کی ضمانت کے لیے Swift میں defer استعمال کریں۔

swift
import Foundation

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

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

// Work with temp file
try "temporary data".write(to: tempURL, atomically: true)
// ... file operation ...
// defer executes when scope exits

طویل مدتی ڈیٹا کے لیے tmp استعمال نہ کریں

اگر تخلیق کے ایک گھنٹہ بعد بھی ڈیٹا کی ضرورت ہو سکتی ہے — اسے Caches یا Application Support میں محفوظ کریں۔ tmp منٹوں کے کاموں کے لیے ہے، ذخیرہ کرنے کے لیے نہیں۔

ان اصولوں پر عمل کرنا یقینی بناتا ہے کہ عارضی فائلیں جمع نہ ہوں، ڈسک کی جگہ موثر طریقے سے استعمال ہو، اور ایپ iOS فائل سسٹم کی صفائی کے کسی بھی منظرنامے کو صحیح طریقے سے سنبھالے۔

اکثر پوچھے گئے سوالات

کیا ایپ کے چلنے کے دوران Temporary Directory کا راستہ تبدیل ہو سکتا ہے؟

عام طور پر ایک سیشن کے اندر راستہ تبدیل نہیں ہوتا، لیکن iOS اس کی ضمانت نہیں دیتا۔ نایاب صورتوں میں، جب ایپ بیک گراؤنڈ سے فار گراؤنڈ میں آتی ہے تو سسٹم tmp کو تبدیل کر سکتا ہے۔ اسی لیے Apple ایک متغیر میں محفوظ کرنے کے بجائے ہر بار جب راستے کی ضرورت ہو NSTemporaryDirectory() کو کال کرنے کی سفارش کرتا ہے۔

اگر میں tmp سے فائلیں حذف نہ کروں تو کیا ہوگا؟

فائلیں جمع ہوں گی اور ڈسک کی جگہ لیں گی۔ iOS ڈیوائس ری اسٹارٹ پر tmp کو صاف کر سکتا ہے، لیکن اس وقت تک ایپ ڈسک کی جگہ ضائع کرے گی۔ کافی جمع ہونے پر، صارف اسٹوریج کی ترتیبات میں دیکھ سکتا ہے کہ ایپ بہت زیادہ جگہ لے رہی ہے۔

کیا tmp عارضی ڈیٹا کو خفیہ کرنے کے لیے موزوں ہے؟

ہاں، آپ حساس ڈیٹا والی عارضی فائلوں کے لیے NSFileProtectionComplete کے ساتھ DataProtectionType استعمال کر سکتے ہیں۔ تاہم، یاد رکھیں: اگر فائل صرف موجودہ سیشن میں پڑھی جائے گی اور پھر حذف ہو جائے گی، تو خفیہ کرنا ضرورت سے زیادہ ہو سکتا ہے۔ ڈیٹا کی قسم کی بنیاد پر خفیہ کرنے کی ضرورت کا اندازہ لگائیں۔

بغیر تصادم کے tmp میں منفرد فائل کا نام کیسے بنایا جائے؟

منفرد شناخت کنندہ بنانے کے لیے ProcessInfo.processInfo.globallyUniqueString یا UUID().uuidString استعمال کریں۔ FileManager urlForCreatingTemporaryFile طریقہ بھی فراہم کرتا ہے، جو خود بخود tmp میں منفرد نام بناتا ہے۔ یہ متوازی تحریروں کے دوران تصادم کی عدم موجودگی کی ضمانت دیتا ہے۔

کیا tmp کا سائز App Store کے جائزے کو متاثر کرتا ہے؟

بالواسطہ — ہاں۔ Apple ڈسک پر ایپ کے ذخیرہ کردہ ڈیٹا کی کل مقدار پر توجہ دیتا ہے۔ اگر tmp میں حذف نہ کی گئی گیگا بائٹس فائلیں ہیں، تو جائزہ لینے والا ایپ کو مسترد کر سکتا ہے۔ tmp کے لیے تجویز کردہ حد کسی بھی وقت 100 MB سے زیادہ نہیں ہے۔ باقاعدگی سے tmp صاف کریں اور FileManager کے ذریعے اس کا سائز چیک کریں۔

خلاصہ

  • Temporary Directory (tmp) — ڈیٹا کے لیے ڈائریکٹری جس کی زندگی کا دورانیہ موجودہ ایپ سیشن تک محدود ہے۔
  • tmp کا راستہ لانچوں کے درمیان تبدیل ہو سکتا ہے — اسے مستقل اسٹوریج میں محفوظ نہ کریں۔
  • سسٹم ڈیوائس ری اسٹارٹ یا ایپ آف لوڈ پر tmp کو صاف کر سکتا ہے۔
  • tmp کی فائلیں iCloud اور iTunes بیک اپ میں شامل نہیں ہوتیں۔
  • Caches Directory کے برعکس، tmp سیشنوں کے درمیان ذخیرہ کرنے کے لیے نہیں ہے۔
  • ڈویلپر کو FileManager.removeItem استعمال کرکے عارضی فائلوں کو واضح طور پر حذف کرنا چاہیے۔
  • Swift میں defer استعمال کریں تاکہ کارروائی کے نتیجے سے قطع نظر عارضی فائلوں کے حذف ہونے کی ضمانت ہو۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں