موبائل ڈیولپمنٹ میں فائل سسٹم اور دستاویزات: یہ کیا ہے، کیا اصول اور کیسے کام کرتا ہے

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

فائل سسٹم کے ساتھ کام کرنا کسی بھی موبائل ایپلیکیشن کی بنیاد ہے۔ ہر پلیٹ فارم اپنا رسائی ماڈل پیش کرتا ہے: iOS پر Sandbox ایپلیکیشنز کو علیحدہ کنٹینرز میں الگ کرتا ہے، جبکہ Android پر Scoped Storage مشترکہ اسٹوریج تک براہ راست رسائی کو محدود کرتا ہے۔ Google Developer Documentation (2026) کے مطابق، Android 10 کے ساتھ Scoped Storage کے تعارف نے ڈیٹا اسٹوریج آرکیٹیکچر کے مکمل جائزے کی ضرورت پیش کی۔ اس گائیڈ میں ہم دونوں پلیٹ فارمز کے لیے FileManager، MediaStore API، Storage Access Framework اور DocumentProvider کا احاطہ کریں گے۔

اہم نکات

  • Sandbox — ایک الگ تھلگ iOS ماحول جہاں ہر ایپ صرف اپنی ڈائرکٹری میں کام کرتی ہے، دوسری ایپس کے ڈیٹا تک رسائی کے بغیر۔
  • Scoped Storage — Android 10+ ماڈل جو MediaStore API اور SAF کے ذریعے بیرونی اسٹوریج تک براہ راست رسائی کو محدود کرتا ہے۔
  • FileManager — فائل آپریشنز کے لیے بنیادی iOS کلاس: بنانا، پڑھنا، کاپی کرنا، منتقل کرنا اور حذف کرنا۔
  • Storage Access Framework — Intent ACTION_OPEN_DOCUMENT استعمال کرتے ہوئے دستاویزات منتخب کرنے کے لیے Android کا نظامی طریقہ کار۔
  • DocumentProvider — SAF کے ذریعے ایپ فائلوں کو مشترکہ فائل سسٹم میں شائع کرنے کے لیے Android جزو۔

موبائل ایپس میں فائل سسٹم کیا ہے؟

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

iOS اور Android کے درمیان آرکیٹیکچرل فرق

iOS Sandbox ماڈل استعمال کرتا ہے، جہاں ہر ایپ سخت حدوں والی اجازتوں کے ساتھ اپنے کنٹینر میں موجود ہوتی ہے۔ ورژن 10 سے پہلے، Android بیرونی اسٹوریج تک مکمل رسائی فراہم کرتا تھا، لیکن Scoped Storage کے تعارف کے ساتھ، طریقہ iOS کے قریب آ گیا۔ اہم فرق یہ ہے کہ iOS فائل سسٹم کو مکمل طور پر الگ کرتا ہے، جبکہ Android رسائی کی کئی سطحیں پیش کرتا ہے: ایک نجی ڈائرکٹری، عوامی MediaStore اور SAF کے ذریعے عارضی رسائی۔

اہم اسٹوریج کی اقسام

موبائل ایپلیکیشنز ڈیٹا اسٹوریج کی تین اقسام استعمال کرتی ہیں۔ نجی اسٹوریج — اندرونی فائلوں اور کیشے کے لیے صرف ایپ کے قابل رسائی ڈائرکٹری۔ مشترکہ اسٹوریج — MediaStore (Android) یا Files App (iOS) کے ذریعے میڈیا فائلیں۔ کلاؤڈ اسٹوریج — آلات کے درمیان مطابقت پذیری کے لیے iCloud Drive اور Google Drive۔ ہر قسم کے سائز، فائل کی زندگی اور رسائی کی شرائط پر اپنی حدود ہیں۔

اسٹوریج کی قسمiOSAndroid
نجیDocuments, Library, CachesgetFilesDir(), getCacheDir()
مشترکہ میڈیاPHPhotoLibrary چنندہ کے ذریعےMediaStore API (ContentResolver)
مشترکہ دستاویزاتUIDocumentPicker کے ذریعے Files AppStorage Access Framework (SAF)
کلاؤڈiCloud Drive (UIDocument)Google Drive API
کیشےCaches ڈائرکٹری، نظام صاف کرتا ہےgetCacheDir(), getExternalCacheDir()

موبائل ڈیولپمنٹ میں فائل سسٹم: iOS پر Sandbox

Sandbox iOS کا حفاظتی آرکیٹیکچر ہے جو ہر ایپلیکیشن کو الگ کرتا ہے۔ ایک ایپ صرف اپنے سینڈباکس کے اندر پڑھ اور لکھ سکتی ہے۔ رابطوں، تصاویر یا دوسری ایپس کی فائلوں تک رسائی کے لیے، نظامی چنندہ استعمال کرنا ضروری ہے: UIImagePickerController یا UIDocumentPickerViewController۔ Files App تک رسائی Info.plist میں UIFileSharingEnabled فلیگ کے ذریعے ترتیب دی جاتی ہے۔ iOS پر موبائل ڈیولپمنٹ میں فائل سسٹم کے لیے ڈائرکٹری کی ساخت کو سمجھنا اور ہر ڈیٹا کی قسم کے لیے صحیح مقام کا انتخاب کرنا ضروری ہے۔

سینڈباکس ڈائرکٹری کی ساخت

iOS سینڈباکس کئی معیاری ڈائرکٹریز پر مشتمل ہے۔ Documents — صارف کی فائلوں کے لیے، iCloud Backup میں شامل۔ Caches — عارضی ڈیٹا کے لیے جو اسٹوریج کم ہونے پر نظام حذف کر سکتا ہے۔ Temporary — موجودہ سیشن کی فائلوں کے لیے، دوبارہ شروع ہونے پر صاف ہو جاتی ہے۔ Application Support — صارف سے پوشیدہ اندرونی ایپ ڈیٹا کے لیے۔ غلط ڈائرکٹری کا انتخاب مسائل کا باعث بنتا ہے: Documents میں کیشے محفوظ کرنا iCloud کی جگہ ضائع کرتا ہے اور Apple کے فائل سسٹم رہنما اصولوں کی خلاف ورزی کرتا ہے۔

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 = "Содержимое файла"

// ایٹمک رائٹنگ خفیہ کاری کے ساتھ
try text.write(
    to: fileURL,
    atomically: true,
    encoding: .utf8
)

FileManager — فائل آپریشنز کے لیے بنیادی API

FileManager کلاس iOS پر فائلوں کے انتظام کے لیے طریقوں کا ایک مکمل سیٹ فراہم کرتی ہے۔ FileManager.default ایک تھریڈ محفوظ سنگلٹن ہے جو زیادہ تر آپریشنز کے لیے موزوں ہے۔ fileExists(atPath:)، createDirectory(at:withIntermediateDirectories:attributes:)، copyItem(at:to:) اور removeItem(at:) جیسے طریقے بنیادی منظرناموں کا احاطہ کرتے ہیں۔ 1 MB سے بڑے فائل آپریشنز DispatchQueue.global() کے ذریعے پس منظر کے تھریڈ میں انجام دینے چاہئیں۔ بڑی مقدار میں سٹریمنگ کے لیے، پوری فائل کو میموری میں لوڈ کرنے کے بجائے FileHandle استعمال کریں۔

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)
}

موبائل ایپس میں فائل سسٹم: Android پر Scoped Storage

Android 10 کی ریلیز کے ساتھ، Google نے Scoped Storage متعارف کرایا — فائل سسٹم تک محدود رسائی کا ایک ماڈل۔ ایک ایپ صرف اپنی نجی ڈائرکٹریز میں آزادانہ طور پر پڑھ اور لکھ سکتی ہے۔ میڈیا فائلوں (تصاویر، ویڈیوز، آڈیو) کے لیے، ContentResolver کے ذریعے MediaStore API استعمال ہوتا ہے۔ صوابدیدی دستاویزات کے لیے، Intent ACTION_OPEN_DOCUMENT کے ذریعے Storage Access Framework استعمال ہوتا ہے۔ Android 11+ پر، بیرونی اسٹوریج کی جڑ تک براہ راست رسائی مکمل طور پر ممنوع ہے، اور تمام ڈویلپرز کو نئی APIs استعمال کرنی چاہئیں۔

میڈیا فائلوں کے ساتھ کام کرنے کے لیے MediaStore API

MediaStore ڈیوائس پر میڈیا فائلوں تک رسائی کے لیے ایک نظامی ContentProvider ہے۔ ContentResolver کے ذریعے، ایپ براہ راست راستوں کے بجائے فائل Uri کی درخواست کرتی ہے۔ MediaStore.Files — تمام فائل اقسام کے لیے، Images — تصاویر کے لیے، Video — ویڈیوز کے لیے، Audio — آڈیو ریکارڈنگ کے لیے۔ مشترکہ ڈائرکٹریز میں تحریر DISPLAY_NAME، MIME_TYPE اور RELATIVE_PATH کے ساتھ insert() کے ذریعے کی جاتی ہے۔ اندراج کے بعد، ایپ ایک Uri حاصل کرتی ہے جس کے ذریعے بائٹس لکھے جاتے ہیں۔ MIME اقسام اہم کردار ادا کرتی ہیں — غلط قسم فائل کھولتے وقت خرابی کا سبب بنے گی۔

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

SAF رن ٹائم اجازتوں کے بغیر فائلوں کو منتخب کرنے اور بنانے کے لیے ایک متحد انٹرفیس فراہم کرتا ہے۔ Intent ACTION_OPEN_DOCUMENT Android پر نظامی فائل مینیجر کھولتا ہے۔ انتخاب کے بعد، ایپ FLAG_GRANT_READ_URI_PERMISSION کے ذریعے عارضی رسائی کے ساتھ content:// Uri حاصل کرتی ہے۔ ACTION_CREATE_DOCUMENT صارف کے منتخب کردہ کسی بھی بیرونی اسٹوریج مقام پر فائلیں محفوظ کرنے کی اجازت دیتا ہے۔ SAF Android 5+ پر کام کرتا ہے اور DocumentsProvider کے ذریعے منسلک کلاؤڈ فراہم کنندگان کی فائلوں تک رسائی فراہم کرتا ہے۔

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)

موبائل ایپس میں دستاویز کا انتخاب: نظامی چنندہ

دونوں پلیٹ فارمز صارفین کو فائلیں منتخب کرنے کے لیے بلٹ ان میکانزم فراہم کرتے ہیں۔ موبائل ایپلیکیشنز میں دستاویزات نظامی چنندہ کے ذریعے منتقل کی جاتی ہیں جو مستقل اجازتوں کے بغیر فائل تک عارضی رسائی دیتے ہیں۔ iOS پر، یہ UIDocumentPickerViewController ہے؛ Android پر، ACTION_OPEN_DOCUMENT۔ موبائل ایپلیکیشنز میں دستاویزات مقامی اسٹوریج اور کلاؤڈ سروسز دونوں سے منتخب کی جا سکتی ہیں۔ صارف واضح طور پر فائل کی وضاحت کرتا ہے، اور ایپ محدود میعاد کے ساتھ Uri یا URL حاصل کرتی ہے۔

iOS پر UIDocumentPickerViewController

UIDocumentPickerViewController Files App کھولتا ہے اور ایک یا زیادہ دستاویزات منتخب کرنے کی اجازت دیتا ہے۔ موڈ: درآمد (سینڈباکس میں کاپی) اور کھولنا (سیکیورٹی اسکوپڈ URL کے ذریعے رسائی)۔ فائل فلٹرنگ کے لیے، UTType اقسام کی ایک صف منتقل کی جاتی ہے — مثال کے طور پر، .pdf اور .plainText۔ URL حاصل کرنے کے بعد، ایپ کو پڑھنے سے پہلے startAccessingSecurityScopedResource() اور ختم کرنے کے بعد stopAccessingSecurityScopedResource() کو کال کرنا چاہیے۔ stopAccessing کو کال نہ کرنا نظامی وسائل کے رساؤ کا سبب بنتا ہے۔ iOS پر موبائل ایپلیکیشنز میں دستاویزات کے لیے فائل کے ساتھ کام ختم کرنے کے بعد عارضی اجازتوں کو لازمی طور پر جاری کرنا ضروری ہے۔

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

// ڈیلیگیٹ میں رسائی جاری کرنا
func documentPicker(
    _ controller: UIDocumentPickerViewController,
    didPickDocumentsAt urls: [URL]
) {
    guard let url = urls.first else { return }
    url.startAccessingSecurityScopedResource()
    defer { url.stopAccessingSecurityScopedResource() }
}

Android پر FileProvider اور DocumentProvider

FileProvider ایپس کے درمیان محفوظ طریقے سے فائلیں شیئر کرنے کے لیے ContentProvider کا ایک ذیلی طبقہ ہے۔ یہ مخصوص XML ڈائرکٹریز کی فائلوں کی بنیاد پر عارضی content:// Uri تیار کرتا ہے۔ دوسری ایپس FLAG_GRANT_READ_URI_PERMISSION کے ساتھ Intent کے ذریعے رسائی حاصل کرتی ہیں۔ DocumentProvider، FileProvider کے برعکس، SAF میں فائلیں شائع کرتا ہے اور دوسری ایپس کو آپ کی ایپ کے مواد کو فائل سسٹم کے حصے کے طور پر براؤز کرنے کی اجازت دیتا ہے۔ DocumentsProvider کو لاگو کرنے کے لیے، آپ کو queryRoots()، queryChildDocuments() اور openDocument() کو اوور رائڈ کرنا ہوگا، پھر اسے AndroidManifest.xml میں رجسٹر کرنا ہوگا۔

iCloud Drive اور کلاؤڈ فائل مطابقت پذیری

کلاؤڈ مطابقت پذیری صارفین کو ان کے تمام آلات پر دستاویزات تک رسائی دیتی ہے۔ موبائل ایپلیکیشنز میں فائل سسٹم کلاؤڈ پرت کے ذریعے بڑھایا جاتا ہے: iOS پر UIDocument خود بخود تبدیلیوں کو ٹریک کرتا ہے اور iCloud کے ذریعے انہیں مطابقت پذیر کرتا ہے۔ Android پر، اسی طرح کی فعالیت Google Drive API یا کلاؤڈ جڑوں والے DocumentsProvider کے ذریعے بنائی جاتی ہے۔ کراس ڈیوائس مطابقت پذیری بنانے کے لیے موبائل ڈیولپمنٹ میں فائل سسٹم کو سمجھنا بہت ضروری ہے۔

UIDocument — iOS پر مطابقت پذیری

UIDocument iCloud دستاویزات کے ساتھ کام کرنے کے لیے ایک تجریدی کلاس ہے۔ یہ خود بخود تبدیلیاں محفوظ کرتا ہے، ڈیٹا پڑھتا ہے اور ڈیلیگیٹ کو اپ ڈیٹس کے بارے میں مطلع کرتا ہے۔ تحریر کے تصادم پر، NSFileVersion دستیاب ورژنز کی فہرست فراہم کرتا ہے — ڈویلپر تازہ ترین ورژن کا انتخاب کرسکتا ہے یا صارف کو تصادم حل کرنے کے اختیارات دکھا سکتا ہے۔ iCloud Drive کے لیے پروجیکٹ کی صلاحیتوں میں Ubiquity Container کو ترتیب دینا لازمی ہے۔ NSFileCoordinator اور NSFilePresenter متعدد تھریڈز یا آلات سے بیک وقت رسائی کے دوران ڈیٹا ریس کو روکتے ہیں۔

ڈیٹا بیک اپ اور بحالی

iOS خود بخود Documents ڈائرکٹری کو iCloud Backup میں شامل کرتا ہے۔ Android Auto Backup for Apps کے ساتھ کام کرتا ہے — نظام getFilesDir()، SharedPreferences اور SQLite ڈیٹا بیسز سے ڈیٹا Google Drive میں محفوظ کرتا ہے۔ کیشے اور بیرونی فائلیں بیک اپ میں شامل نہیں ہوتیں۔ دونوں پلیٹ فارمز استثنیات ترتیب دینے کی اجازت دیتے ہیں: iOS پر NSURLIsExcludedFromBackupKey کے ذریعے، Android پر XML بیک اپ اصولوں کی ترتیب کے ذریعے۔ ذاتی ڈیٹا والی فائلوں کی خفیہ کاری لازمی ہے — iOS پر NSDataWritingFileProtectionComplete استعمال کریں، Android پر security-crypto لائبریری سے EncryptedFile استعمال کریں۔

پیرامیٹرiOSAndroid
ڈیفالٹ بیک اپDocuments اور LibrarygetFilesDir(), SharedPreferences, DB
فائل استثناisExcludedFromBackupKeyXML بیک اپ اصول (fullBackupContent)
خفیہ کاریNSDataWritingFileProtectionCompleteEncryptedFile (security-crypto)
کلاؤڈ مطابقت پذیریUIDocument + iCloudGoogle Drive API + SAF
خودکار بحالیانسٹالیشن کے بعد iCloud Restoreدوبارہ انسٹال پر Auto Backup

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

iOS پر Sandbox کیا ہے؟

Sandbox iOS پر ہر ایپ کے لیے ایک الگ تھلگ ماحول ہے۔ ایپ UIDocumentPickerViewController جیسے نظامی چنندہ استعمال کیے بغیر دوسری ایپس کی فائلوں تک رسائی حاصل نہیں کر سکتی۔

Android پر Scoped Storage کیا ہے؟

Scoped Storage Android 10+ پر فائل سسٹم تک محدود رسائی کا ایک ماڈل ہے۔ ایپ براہ راست صرف اپنی فائلیں پڑھتی ہے، میڈیا کے لیے MediaStore API اور دستاویزات کے لیے Storage Access Framework استعمال کرتی ہے۔

iOS پر فائل کیسے منتخب کریں؟

UIDocumentPickerViewController استعمال کریں — Files App یا iCloud Drive سے دستاویزات منتخب کرنے کے لیے نظامی چنندہ۔ انتخاب کے بعد، آپ کو عارضی رسائی کے ساتھ سیکیورٹی اسکوپڈ URL ملتا ہے۔

Android 11+ پر فائلوں تک کیسے رسائی حاصل کریں؟

میڈیا فائلوں کے لیے، MIME قسم کی وضاحت کرتے ہوئے ContentResolver کے ذریعے MediaStore API استعمال کریں۔ صوابدیدی دستاویزات کے لیے، Intent ACTION_OPEN_DOCUMENT کے ساتھ Storage Access Framework استعمال کریں۔

Android پر FileProvider کیا ہے؟

FileProvider FLAG_GRANT_READ_URI_PERMISSION کے ساتھ عارضی content:// Uri کے ذریعے ایپس کے درمیان محفوظ طریقے سے فائلیں شیئر کرنے کے لیے ContentProvider کا ایک ذیلی طبقہ ہے۔

خلاصہ

  • Sandbox — iOS کا الگ تھلگ فائل سسٹم جہاں ایک ایپ صرف اپنی Documents، Caches اور Library ڈائرکٹریز تک رسائی حاصل کر سکتی ہے۔
  • FileManager — iOS پر فائل آپریشنز کے لیے بنیادی API۔ پس منظر کے تھریڈ میں FileHandle کے ذریعے بڑی فائلیں پڑھیں۔
  • Scoped Storage — Android 10+ پر فائل سسٹم ماڈل جو بیرونی اسٹوریج تک براہ راست رسائی کو MediaStore API اور SAF سے بدل دیتا ہے۔
  • MediaStore API — Android پر میڈیا فائلوں کے ساتھ کام کرنے کے لیے ایک نظامی ContentProvider۔ ContentValues کے ساتھ insert() کے ذریعے تحریر کی جاتی ہے۔
  • Storage Access Framework — Android پر ACTION_OPEN_DOCUMENT اور ACTION_CREATE_DOCUMENT کے ذریعے دستاویز انتخاب کا ایک عالمی طریقہ کار۔
  • UIDocumentPickerViewController — iOS کا نظامی چنندہ جو Files App اور iCloud Drive کھولتا ہے۔ سیکیورٹی اسکوپڈ URLs کے ساتھ کام کرتا ہے۔
  • FileProvider — عارضی content:// Uri اور رن ٹائم اجازتوں کے ذریعے Android ایپس کے درمیان محفوظ فائل شیئرنگ کے لیے ایک طریقہ کار۔

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

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

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