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 ক্ষমতার সাথে আরও ভাল সামঞ্জস্যের জন্য স্ট্রিং-ভিত্তিক API-এর পরিবর্তে 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 এবং Files অ্যাপের মাধ্যমে Documents-এ অ্যাক্সেস প্রদান করে — এটি সচেতনভাবে ব্যবহার করুন।
  • নিয়মিতভাবে Documents Directory-র আকার পর্যবেক্ষণ করুন: অ-গুরুত্বপূর্ণ ডেটার জন্য 100 MB অতিক্রম করা একটি আর্কিটেকচারাল সমস্যা।

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন