मोबाइल डेवलपमेंट में फ़ाइल सिस्टम और दस्तावेज़: यह क्या है, सिद्धांत और कैसे काम करता है

लेखक: 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 घटक।

मोबाइल ऐप्स में फ़ाइल सिस्टम क्या है?

मोबाइल एप्लिकेशन में फ़ाइल सिस्टम API, सुरक्षा नियमों और बाधाओं का एक सेट है जो 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+ पर, बाहरी स्टोरेज की जड़ तक सीधी पहुंच पूरी तरह से निषिद्ध है, और सभी डेवलपर्स को नए API का उपयोग करना होगा।

मीडिया फ़ाइलों के साथ काम करने के लिए 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 — ACTION_OPEN_DOCUMENT और ACTION_CREATE_DOCUMENT के माध्यम से Android पर दस्तावेज़ चयन के लिए एक सार्वभौमिक तंत्र।
  • UIDocumentPickerViewController — iOS का सिस्टम पिकर जो Files App और iCloud Drive खोलता है। सुरक्षा-स्कोप्ड URLs के साथ काम करता है।
  • FileProvider — अस्थायी content:// Uri और रनटाइम अनुमतियों के माध्यम से Android ऐप्स के बीच सुरक्षित फ़ाइल साझाकरण के लिए एक तंत्र।

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें