Documents Directory: यह क्या है, उद्देश्य और फ़ाइल एक्सेस

लेखक: IT Sectr प्रकाशित: 2026-07-10 पढ़ने का समय: 10 मिनट

Documents Directory iOS ऐप सैंडबॉक्स में एक निर्देशिका है जो उपयोगकर्ता डेटा को संग्रहीत करने के लिए डिज़ाइन की गई है जो ऐप सत्रों के बीच बना रहना चाहिए और iTunes File Sharing और iCloud के माध्यम से उपयोगकर्ता के लिए सुलभ होना चाहिए। Apple File System Programming Guide (2024) के अनुसार, इस निर्देशिका की सामग्री स्वचालित रूप से iCloud और iTunes बैकअप में शामिल होती है, इसलिए डेवलपर को सचेत रूप से चुनना चाहिए कि Documents में कौन सा डेटा रखना है। Caches Directory के विपरीत, Documents में फ़ाइलें सिस्टम द्वारा स्थान की कमी होने पर नहीं हटाई जाती हैं — आकार प्रबंधन की ज़िम्मेदारी ऐप पर है।

मुख्य बिंदु

  • Documents Directory उपयोगकर्ता फ़ाइलों के लिए मुख्य निर्देशिका है जो बनी रहनी चाहिए और iTunes के माध्यम से सुलभ होनी चाहिए।
  • Documents से डेटा स्वचालित रूप से बैकअप iCloud और iTunes में होता है — स्टोरेज डिज़ाइन करते समय इसे ध्यान में रखें।
  • सिस्टम कैश साफ़ करते समय Documents से फ़ाइलों को हटाता नहीं है — स्थान खाली करने की ज़िम्मेदारी डेवलपर की है।
  • निर्देशिका का पथ NSSearchPathForDirectoriesInDomains के साथ NSDocumentDirectory या FileManager.urls के माध्यम से प्राप्त किया जाता है।
  • बड़ी फ़ाइलों के लिए जिन्हें पुनः प्राप्त किया जा सकता है, Caches Directory का उपयोग करें — iCloud बैकअप में स्थान बर्बाद करने से बचने के लिए।

iOS में Documents Directory क्या है?

Documents Directory iOS ऐप सैंडबॉक्स के अंदर एक निर्देशिका है जो उपयोगकर्ता डेटा को संग्रहीत करने के लिए डिज़ाइन की गई है जो लॉन्च के बीच बना रहना चाहिए और उपयोगकर्ता के लिए सुलभ होना चाहिए। प्रत्येक ऐप को अपना अलग सैंडबॉक्स मिलता है, और Documents, Caches, tmp और Library के साथ मुख्य निर्देशिकाओं में से एक है।

iOS एक सख्त सैंडबॉक्स का उपयोग करता है: एक ऐप के पास विशेष अनुमतियों के बिना अन्य ऐप्स की फ़ाइल प्रणाली या सिस्टम निर्देशिकाओं तक पहुँच नहीं होती है। Documents Directory एकमात्र निर्देशिका है जिसकी सामग्री उपयोगकर्ता iTunes File Sharing के माध्यम से देख सकता है (जब Info.plist में UIFileSharingEnabled कुंजी सक्षम हो)।

Apple WWDC 2023 के अनुसार, App Store में 85% से अधिक ऐप्स कम से कम एक प्रकार के उपयोगकर्ता डेटा को संग्रहीत करने के लिए Documents Directory का उपयोग करते हैं — निर्यात किए गए PDF से लेकर सहेजी गई गेम फ़ाइलों और निर्यात की गई छवियों तक।

डेवलपर के लिए यह समझना महत्वपूर्ण है: Documents में फ़ाइलें स्वचालित रूप से शामिल होती हैं iCloud और iTunes बैकअप में। यदि कोई ऐप Documents में बड़ी मात्रा में पुनर्प्राप्त करने योग्य डेटा संग्रहीत करता है (जैसे, इमेज कैश या अस्थायी फ़ाइलें), तो इससे उपयोगकर्ता के iCloud स्टोरेज स्थान की अनावश्यक खपत होती है।

Documents Directory का पथ कैसे प्राप्त करें

Swift में, Documents Directory का पथ FileManager के माध्यम से प्राप्त किया जाता है। Apple आधुनिक iOS क्षमताओं के साथ बेहतर संगतता के लिए स्ट्रिंग-आधारित के बजाय URL-आधारित API का उपयोग करने की सलाह देता है।

swift
import Foundation

let fileManager = FileManager.default
guard let documentsURL = fileManager.urls(
    for: .documentDirectory,
    in: .userDomainMask
).first else { return }

// Documents में फ़ाइल बनाएँ
let fileURL = documentsURL.appendingPathComponent("report.pdf")
let data = Data("Hello, world!".utf8)
try data.write(to: fileURL)

Objective-C NSSearchPathForDirectoriesInDomains का उपयोग करता है — एक पुराना लेकिन फिर भी समर्थित दृष्टिकोण जो URL के बजाय एक स्ट्रिंग पथ लौटाता है।

objective-c
@import Foundation;

NSArray *paths = NSSearchPathForDirectoriesInDomains(
    NSDocumentDirectory,
    NSUserDomainMask,
    YES
);
NSString *documentsPath = paths.firstObject;
NSString *filePath = [documentsPath stringByAppendingPathComponent:@"report.pdf"];

Swift में आधुनिक प्रोजेक्ट्स को FileManager.urls का उपयोग करना चाहिए, क्योंकि यह विधि स्ट्रिंग के बजाय URL लौटाती है, जिससे पथ एन्कोडिंग त्रुटियों का जोखिम कम होता है और कोड अधिक टाइप-सेफ़ बनता है।

Documents में कौन सा डेटा स्टोर करें

Documents Directory उपयोगकर्ता द्वारा बनाए गए या उपयोगकर्ता के लिए स्पष्ट रूप से आवश्यक डेटा के लिए है। Apple कई श्रेणियों पर प्रकाश डालता है जो इस निर्देशिका के लिए उपयुक्त हैं।

उपयोगकर्ता दस्तावेज़ और फ़ाइलें

फ़ाइलें जो उपयोगकर्ता बनाता या आयात करता है — टेक्स्ट दस्तावेज़, PDF, छवियाँ, निर्यात की गई रिपोर्ट, बैकअप फ़ाइलें। इस डेटा का उपयोगकर्ता के लिए सीधा मूल्य है और इसका खोना गंभीर होगा।

गेम सेव और ऐप स्थिति

गेम सेव, ऐप स्थिति फ़ाइलें, निर्यात की गई परियोजनाएँ — वह सब कुछ जो उपयोगकर्ता ऐप को पुनः स्थापित करने के बाद पुनर्स्थापित करने की अपेक्षा करता है। हालाँकि, महत्वपूर्ण डेटा के लिए iCloud Key-Value Storage या iCloud सिंक के साथ Core Data का अतिरिक्त उपयोग करने की अनुशंसा की जाती है।

डेटा प्रकारDocuments के लिए उपयुक्तविकल्प
PDF और टेक्स्ट दस्तावेज़हाँ
इमेज कैशनहींCaches Directory
गेम सेवहाँiCloud KVS
लॉग और डीबग डेटानहींCaches या tmp
निर्यात की गई रिपोर्टहाँ

मुख्य मानदंड: यदि डेटा को नेटवर्क से पुनः डाउनलोड किया जा सकता है या पुनः बनाया जा सकता है — तो इसका स्थान Caches में है, Documents में नहीं। Documents में प्रत्येक गीगाबाइट उपयोगकर्ता के iCloud बैकअप में एक गीगाबाइट है।

बैकअप और सिंक्रोनाइज़ेशन

iOS स्वचालित रूप से Documents Directory की सामग्री को बैकअप में शामिल करता है जब डिवाइस iTunes से कनेक्ट होता है या iCloud के साथ सिंक करता है। इस व्यवहार को निर्देशिका स्तर पर अक्षम नहीं किया जा सकता — केवल प्रति फ़ाइल NSURLIsExcludedFromBackupKey विशेषता के माध्यम से।

iOS 5.0 से शुरू करते हुए, Apple ने उन ऐप्स को अस्वीकार करना शुरू किया जो Documents में बड़ी मात्रा में पुनर्प्राप्त करने योग्य डेटा संग्रहीत करते हैं। Apple की अनुशंसा: जिन फ़ाइलों को पुनः डाउनलोड किया जा सकता है, उन्हें बैकअप बहिष्करण फ़्लैग के साथ Caches Directory में संग्रहीत किया जाना चाहिए।

swift
import Foundation

let documentsURL = FileManager.default
    .urls(for: .documentDirectory, in: .userDomainMask)
    .first!

// फ़ाइल को iCloud बैकअप से बाहर करें
var resourceValues = URLResourceValues()
resourceValues.isExcludedFromBackup = true

var fileURL = documentsURL.appendingPathComponent("cached_data.json")
try fileURL.setResourceValues(resourceValues)

iCloud सिंक्रोनाइज़ेशन NSUbiquitousContainer के माध्यम से काम करता है यदि ऐप iCloud Documents का उपयोग करता है। इस मामले में, Documents Directory से फ़ाइलें स्वचालित रूप से उपयोगकर्ता के उपकरणों के बीच सिंक होती हैं। iCloud के बिना ऐप्स के लिए, सिंक्रोनाइज़ेशन बैकअप तक सीमित है।

Documents Directory बनाम Caches Directory

Documents और Caches के बीच का अंतर शुरुआती iOS डेवलपर्स के बीच सबसे आम गलतफहमियों में से एक है। मुख्य अंतर: सिस्टम स्थान खाली करने के लिए किसी भी समय Caches से फ़ाइलों को हटा सकता है, लेकिन उपयोगकर्ता की जानकारी के बिना Documents को कभी नहीं छूता है।

विशेषताDocuments DirectoryCaches Directory
iCloud बैकअपहाँ (डिफ़ॉल्ट रूप से)नहीं
सिस्टम द्वारा हटानाकभी नहींस्थान की कमी होने पर
iTunes File Sharingहाँ (फ़्लैग सक्षम होने पर)नहीं
उद्देश्यउपयोगकर्ता डेटाकैश, अस्थायी डेटा
डेटा पुनर्प्राप्तिपुनर्स्थापना की आवश्यकतापुनः डाउनलोड किया जा सकता है

Apple Developer Documentation (2024) के अनुसार, Documents Directory का अनुचित उपयोग समीक्षा के दौरान ऐप अस्वीकृति के सामान्य कारणों में से एक है: यदि कोई ऐप Documents में कुछ मेगाबाइट से अधिक पुनर्प्राप्त करने योग्य डेटा संग्रहीत करता है, तो Apple इसे Caches में स्थानांतरित करने या NSURLIsExcludedFromBackupKey लागू करने की सलाह देता है।

एक व्यावहारिक नियम: यदि उपयोगकर्ता फ़ाइल खोने पर परेशान होगा — इसे Documents में स्टोर करें। यदि फ़ाइल को पुनः डाउनलोड या पुनः उत्पन्न किया जा सकता है — इसे Caches में स्टोर करें।

Documents के साथ काम करने के सर्वोत्तम अभ्यास

अनुभवी iOS डेवलपर्स ने कई नियम विकसित किए हैं जो ऐप जीवनचक्र के सभी चरणों में Documents Directory के साथ समस्याओं से बचने में मदद करते हैं — विकास से लेकर App Store प्रकाशन तक।

निर्देशिका आकार की निगरानी

नियमित रूप से FileManager.enumerator(at:includingPropertiesForKeys:) के माध्यम से Documents Directory के आकार की जाँच करें। यदि आकार गैर-उपयोगकर्ता डेटा के लिए 100 MB से अधिक है — तो यह स्टोरेज आर्किटेक्चर पर पुनर्विचार करने का एक कारण है।

पुनर्प्राप्त करने योग्य फ़ाइलों को बैकअप से बाहर करना

किसी भी फ़ाइल के लिए जिसे पुनः डाउनलोड किया जा सकता है, isExcludedFromBackup = true सेट करें। यह उपयोगकर्ता के iCloud स्टोरेज पर लोड को कम करता है और App Review अस्वीकृति के जोखिम को कम करता है।

अपडेट के दौरान माइग्रेशन

Documents में डेटा प्रारूप बदलते समय, माइग्रेशन की योजना बनाएँ: पुरानी फ़ाइलों को तब तक न हटाएँ जब तक आप सुनिश्चित न हों कि नई फ़ाइलें सही ढंग से बनाई गई हैं। संस्करण-विशिष्ट उपनिर्देशिकाओं का उपयोग करें।

swift
import Foundation

let documentsURL = FileManager.default
    .urls(for: .documentDirectory, in: .userDomainMask)
    .first!

let versionDir = documentsURL.appendingPathComponent("v2")
try FileManager.default.createDirectory(
    at: versionDir,
    withIntermediateDirectories: true
)

इन अभ्यासों का पालन करने से उपयोगकर्ता डेटा हानि का जोखिम कम होता है, iCloud बैकअप आकार घटता है और App Store समीक्षा सरल होती है।

अक्सर पूछे जाने वाले प्रश्न

क्या उपयोगकर्ता iTunes के बिना Documents Directory तक पहुँच सकता है?

हाँ, Files के माध्यम से — iOS 11 से शुरू होने वाला अंतर्निहित iOS ऐप। जब Info.plist में UIFileSharingEnabled कुंजी सक्षम होती है, तो Documents Directory की सामग्री फ़ाइलें ऐप में "मेरे iPhone पर" अनुभाग में दिखाई देती है। उपयोगकर्ता फ़ाइलों को देख, कॉपी और हटा सकता है।

जब ऐप हटा दिया जाता है तो Documents Directory का क्या होता है?

ऐप का पूरा सैंडबॉक्स, जिसमें Documents Directory, Caches, tmp और Library शामिल हैं, डिवाइस से पूरी तरह हटा दिया जाता है। iCloud में बैकअप पुनर्स्थापना या मैन्युअल हटाने तक संरक्षित रहते हैं। पुनः स्थापित करने पर, ऐप एक साफ सैंडबॉक्स से शुरू होता है।

कोड में Documents Directory का आकार कैसे जाँचें?

निर्देशिका में सभी फ़ाइलों को पार करने और उनके आकार को जोड़ने के लिए FileManager.enumerator का उपयोग करें। प्रत्येक फ़ाइल के लिए, resourceValues(forKeys:) के माध्यम से .fileSize विशेषता प्राप्त करें। वैकल्पिक रूप से, URLResourceKey.fileSizeKey और .directoryEnumerationResults का उपयोग करें।

क्या मैं Documents में Core Data SQLite डेटाबेस स्टोर कर सकता हूँ?

डिफ़ॉल्ट रूप से, Core Data SQLite फ़ाइल Library/Application Support में बनाता है, Documents में नहीं। डेटाबेस को Documents में स्थानांतरित करने की अनुशंसा नहीं की जाती है — यह iTunes File Sharing में शामिल होगा और उपयोगकर्ता गलती से इसे हटा या संशोधित कर सकता है। अपवाद यह है यदि ऐप स्पष्ट रूप से उपयोगकर्ता को Core Data के माध्यम से डेटा तक पहुँच प्रदान करता है।

UIFileSharingEnabled क्या है और इसे कैसे सक्षम करें?

UIFileSharingEnabled (Application supports iTunes file sharing) Info.plist में एक बूलियन कुंजी है। YES पर सेट करने पर, उपयोगकर्ता iTunes और Files के माध्यम से Documents Directory से फ़ाइलों की प्रतिलिपि बना सकते हैं। Info.plist में कुंजी जोड़ें: UIFileSharingEnabled = YES। इसे केवल तभी सक्षम करें यदि ऐप वास्तव में उपयोगकर्ता दस्तावेज़ बनाता है।

सारांश

  • Documents Directory iOS ऐप में उपयोगकर्ता डेटा के लिए प्राथमिक स्थान है जिसे बने रहना चाहिए और बैकअप लिया जाना चाहिए।
  • निर्देशिका का पथ Swift में FileManager.urls(for: .documentDirectory) या Objective-C में NSSearchPathForDirectoriesInDomains के माध्यम से प्राप्त किया जाता है।
  • Documents से सभी फ़ाइलें डिफ़ॉल्ट रूप से iCloud और iTunes बैकअप में शामिल होती हैं — बहिष्करण के लिए isExcludedFromBackup का उपयोग करें।
  • सिस्टम Caches Directory के विपरीत, Documents से फ़ाइलों को स्वचालित रूप से नहीं हटाता है।
  • पुनर्प्राप्त करने योग्य डेटा (कैश, अस्थायी फ़ाइलें) के लिए Documents के बजाय Caches Directory का उपयोग करें।
  • UIFileSharingEnabled कुंजी iTunes और फ़ाइलें ऐप के माध्यम से Documents तक पहुँच प्रदान करती है — इसका सचेत रूप से उपयोग करें।
  • नियमित रूप से Documents Directory के आकार की निगरानी करें: गैर-महत्वपूर्ण डेटा के लिए 100 MB से अधिक होना एक आर्किटेक्चरल समस्या है।

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

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

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

यह भी पढ़ें