অ্যাপ অভ্যন্তরীণ স্টোরেজ: এটি কী, ডেটা সংরক্ষণের পদ্ধতি এবং ডেভেলপমেন্টে এটি কীভাবে কাজ করে

লেখক: IT Sectr প্রকাশিত: 2026-03-13 পড়ার সময়: 11 মিনিট

অ্যাপ অভ্যন্তরীণ স্টোরেজ হল ডিভাইসের একটি উত্সর্গীকৃত স্থান যা বিচ্ছিন্ন স্টোরেজের মাধ্যমে শুধুমাত্র একটি নির্দিষ্ট অ্যাপ্লিকেশনের জন্য অ্যাক্সেসযোগ্য। Android Developers, 2026 অনুযায়ী, প্রতিটি অ্যাপ্লিকেশন তার নিজস্ব স্যান্ডবক্স ডিরেক্টরি পায় যাতে অন্যান্য অ্যাপ্লিকেশনগুলির সরাসরি অ্যাক্সেস নেই। এই পদ্ধতি অননুমোদিত পড়া থেকে ডেটা রক্ষা করে এবং মোবাইল ডিভাইসের মাল্টিটাস্কিং পরিবেশে স্থিতিশীল অপারেশন নিশ্চিত করে।

মূল পয়েন্ট

  • Internal Storage — প্রতিটি অ্যাপ্লিকেশনের বিচ্ছিন্ন স্টোরেজ, অন্যান্য প্রোগ্রামের জন্য দুর্গম
  • স্যান্ডবক্স মডেল নিশ্চিত করে যে একটি অ্যাপ্লিকেশনের ডেটা বিশেষ অনুমতি ছাড়া অন্য দ্বারা পড়া যায় না
  • Android অভ্যন্তরীণ স্টোরেজ অ্যাক্সেসের জন্য Context.getFilesDir(), getCacheDir() এবং getDataDir() প্রদান করে
  • iOS অ্যাপ স্যান্ডবক্স কনটেইনারে NSDocumentDirectory এবং NSCachesDirectory ব্যবহার করে
  • স্বয়ংক্রিয় পরিষ্কার অ্যাপ আনইনস্টল করার সময় অভ্যন্তরীণ স্টোরেজ থেকে সমস্ত ডেটার সম্পূর্ণ মুছে ফেলা নিশ্চিত করে

অ্যাপ অভ্যন্তরীণ স্টোরেজ কী?

অ্যাপ অভ্যন্তরীণ স্টোরেজ হল একটি বিচ্ছিন্ন ডিরেক্টরি যা অপারেটিং সিস্টেম ইনস্টলেশনের সময় প্রতিটি অ্যাপ্লিকেশনকে বরাদ্দ করে। অন্যান্য অ্যাপ্লিকেশন এবং ব্যবহারকারী স্ট্যান্ডার্ড ফাইল ম্যানেজারের মাধ্যমে এই ডিরেক্টরিতে অ্যাক্সেস করতে পারে না। সিস্টেম গ্যারান্টি দেয় যে এই ডিরেক্টরির ভিতরের সমস্ত ডেটা অ্যাপ্লিকেশন আনইনস্টল করার সময় সম্পূর্ণরূপে মুছে ফেলা হবে। এই পদ্ধতি মোবাইল অপারেটিং সিস্টেম নিরাপত্তা মডেলের ভিত্তি তৈরি করে, প্রোগ্রামগুলির মধ্যে গোপনীয় তথ্য ফাঁস রোধ করে।

বাহ্যিক স্টোরেজ (SD কার্ড) থেকে ভিন্ন, অভ্যন্তরীণ স্টোরেজ সর্বদা উপলব্ধ এবং মিডিয়ার উপস্থিতি পরীক্ষা করার প্রয়োজন হয় না। আধুনিক ডিভাইসে NAND ফ্ল্যাশ মেমরিতে পড়া এবং লেখার গতি 800–900 MB/s অনুক্রমিক পঠন এবং 200–300 MB/s অনুক্রমিক লেখায় পৌঁছায়, যা SATA SSD-এর সাথে তুলনীয়। বরাদ্দকৃত এলাকার আকার ডিভাইসের মোট ক্ষমতা এবং প্রস্তুতকারকের নীতির উপর নির্ভর করে: 64 GB ফ্ল্যাশ মেমরি বিশিষ্ট ডিভাইসে, অ্যাপ প্রয়োজন অনুসারে সম্প্রসারণের সম্ভাবনা সহ 16 থেকে 64 MB প্রাথমিক স্থান পায়।

অভ্যন্তরীণ স্টোরেজ আর্কিটেকচার Android এবং iOS-এর মধ্যে ভিন্ন। Android-এ, প্রতিটি অ্যাপ্লিকেশন একটি /data/data/<package_name>/ ডিরেক্টরি পায়, যার ভিতরে সিস্টেম files/, cache/ এবং databases/ উপডিরেক্টরি তৈরি করে। iOS-এ, অ্যাপ্লিকেশন Documents/, Library/ এবং tmp/ ডিরেক্টরি সহ একটি স্যান্ডবক্স কনটেইনারে কাজ করে, যার প্রতিটির নিজস্ব উদ্দেশ্য এবং ব্যাকআপ নীতি রয়েছে।

অভ্যন্তরীণ মেমরিতে ডেটা সংরক্ষণের পদ্ধতি

ডেভেলপারদের অ্যাপ অভ্যন্তরীণ স্টোরেজে ডেটা সংরক্ষণের বিভিন্ন পদ্ধতি উপলব্ধ। প্রতিটি পদ্ধতি একটি নির্দিষ্ট কাজ সমাধান করে এবং একটি নির্দিষ্ট ধরণের ডেটার জন্য উপযুক্ত। সঠিক পদ্ধতি বেছে নেওয়া সরাসরি অ্যাপ্লিকেশনের কর্মক্ষমতা, ডেভেলপমেন্টের সুবিধা এবং ব্যবহারকারী ডেটা নিরাপত্তাকে প্রভাবিত করে।

বিচ্ছিন্ন ফাইল স্টোরেজ

সর্বনিম্ন স্তরের পদ্ধতি হল ফাইল ডিরেক্টরিতে সরাসরি ফাইল লেখা। একটি অ্যাপ তার স্যান্ডবক্সের ভিতরে যে কোনও ফাইল এবং ডিরেক্টরি তৈরি করতে পারে। এই পদ্ধতি মিডিয়া ফাইল, ব্যবহারকারীর নথি এবং যেকোনো বাইনারি ডেটা সংরক্ষণের জন্য উপযুক্ত যার কাঠামোবদ্ধ সংগঠনের প্রয়োজন নেই। Android-এ, Context.getFilesDir() কলের মাধ্যমে ডিরেক্টরি অ্যাক্সেস করা হয়, যা অ্যাপের ফাইল ডিরেক্টরির সম্পূর্ণ পাথ ফেরত দেয়। iOS-এ, NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) ফাংশন একই উদ্দেশ্য পূরণ করে।

SharedPreferences এবং DataStore

কী-মান জোড়া সংরক্ষণের জন্য, Android SharedPreferences এবং Kotlin কোরুটিন এবং প্রোটোবফ প্রোটোকলের উপর ভিত্তি করে আরও আধুনিক DataStore প্রদান করে। SharedPreferences /data/data/<package>/shared_prefs/ ডিরেক্টরির ভিতরে XML ফাইলে ডেটা সংরক্ষণ করে। সরলতা সত্ত্বেও, SharedPreferences-এর ত্রুটি রয়েছে: সিঙ্ক্রোনাস লেখা UI থ্রেডে বিলম্ব ঘটাতে পারে এবং টাইপ নিরাপত্তার অভাব ত্রুটির ঝুঁকি বাড়ায়। DataStore Flow-ভিত্তিক অ্যাসিঙ্ক্রোনাস API এবং protobuf স্কিমার মাধ্যমে সম্পূর্ণ টাইপ সমর্থন প্রদান করে এই সমস্যাগুলি সমাধান করে।

SQLite ডেটাবেস এবং Room

রিলেশনাল সংযোগ সহ কাঠামোবদ্ধ ডেটার জন্য, SQLite বা Room র্যাপার সর্বোত্তম পছন্দ। ডেটাবেস databases/ ডিরেক্টরির ভিতরে একটি ফাইলে সংরক্ষিত হয় এবং সম্পূর্ণ SQL সিনট্যাক্স সমর্থন করে। Room একটি অফিসিয়াল Jetpack লাইব্রেরি যা টাইপ-নিরাপদ API, স্বয়ংক্রিয় স্কিমা মাইগ্রেশন এবং কোরুটিন সমর্থন প্রদান করে। সঠিক ইনডেক্সিংয়ের সাথে ডেটাবেসের আকার উল্লেখযোগ্য কর্মক্ষমতা ক্ষতি ছাড়াই কয়েক গিগাবাইট পর্যন্ত পৌঁছাতে পারে। মোবাইল ডিভাইসে SQLite একটি আধুনিক ফ্ল্যাগশিপ প্রসেসরে প্রতি সেকেন্ডে 50,000 লেখার অপারেশন পর্যন্ত পরিচালনা করে।

EncryptedSharedPreferences

গোপনীয় ডেটা যেমন প্রমাণীকরণ টোকেন এবং এনক্রিপশন কী সংরক্ষণের জন্য, Android EncryptedSharedPreferences প্রদান করে। স্ট্যান্ডার্ড SharedPreferences-এর উপর এই র্যাপারটি AES256-GCM-None ব্যবহার করে কী এবং মান স্বয়ংক্রিয়ভাবে এনক্রিপ্ট করে। ডিস্কে লেখার আগে ফাইল স্তরে এনক্রিপশন করা হয়, তাই ডিভাইসে শারীরিক অ্যাক্সেস থাকলেও, আক্রমণকারী বিষয়বস্তু পড়তে পারে না। EncryptedSharedPreferences AndroidX Security লাইব্রেরির অংশ, যাতে সম্পূর্ণ ফাইল এনক্রিপ্ট করার জন্য EncryptedFile-ও অন্তর্ভুক্ত রয়েছে।

Android-এ অভ্যন্তরীণ স্টোরেজ নিয়ে কীভাবে কাজ করবেন

Android SDK Context ক্লাসের মাধ্যমে অভ্যন্তরীণ স্টোরেজের সাথে কাজ করার জন্য পদ্ধতির একটি সেট প্রদান করে। প্রতিটি পদ্ধতি অ্যাপ স্যান্ডবক্সের ভিতরে একটি নির্দিষ্ট সিস্টেম ডিরেক্টরির পাথ ফেরত দেয়। আসুন Kotlin উদাহরণ ব্যবহার করে বেসিক ফাইল লেখা এবং পড়ার অপারেশনগুলি দেখি।

Context-এর মাধ্যমে filesDir অ্যাক্সেস

অভ্যন্তরীণ ফাইল ডিরেক্টরির পাথ পাওয়ার প্রধান পদ্ধতি হল context.filesDir। এটি একটি File অবজেক্ট ফেরত দেয় যা /data/data/<package>/files/ ডিরেক্টরির দিকে নির্দেশ করে। প্রথম অ্যাক্সেসে, সিস্টেম স্বয়ংক্রিয়ভাবে সমস্ত প্রয়োজনীয় প্যারেন্ট ডিরেক্টরি তৈরি করে। অভ্যন্তরীণ স্টোরেজে ফাইলের আকার স্পষ্টভাবে সীমাবদ্ধ নয়, তবে ডেটার মোট পরিমাণ /data পার্টিশনে উপলব্ধ স্থানের বেশি হওয়া উচিত নয়, যা সাধারণত মোট ফ্ল্যাশ মেমরি ক্ষমতার 60–80% হয়।

kotlin
val context = getApplicationContext()
val file = File(context.filesDir, "notes.txt")

file.writeText("নোটের বিষয়বস্তু")

val content = file.readText()
println("পড়া হয়েছে: $content")

writeText এবং readText পদ্ধতিগুলি Kotlin স্ট্যান্ডার্ড লাইব্রেরির এক্সটেনশন ফাংশন। এগুলি স্বয়ংক্রিয়ভাবে স্ট্রিম খোলা এবং বন্ধ করা পরিচালনা করে, যা মেমরি লিক প্রতিরোধ করে। বাইনারি ডেটার জন্য, writeBytes এবং readBytes ব্যবহার করুন, যার এনকোডিংয়ের প্রয়োজন নেই এবং ByteArray অ্যারে নিয়ে কাজ করে। বড় ফাইলের সাথে কাজ করার সময়, বাফারড স্ট্রিম ব্যবহার করার পরামর্শ দেওয়া হয়: টেক্সটের জন্য BufferedReader এবং BufferedWriter, বাইনারি ডেটার জন্য BufferedInputStream এবং BufferedOutputStream

অভ্যন্তরীণ স্টোরেজে উপডিরেক্টরি তৈরি করা

ফাইলগুলিকে একটি শ্রেণিবিন্যাসে সংগঠিত করতে, filesDir-এর ভিতরে উপডিরেক্টরি তৈরি করুন। এটি ডেটাকে প্রকার অনুসারে কাঠামোবদ্ধ করতে সহায়তা করে: ছবি, নথি, এক্সপোর্ট ফাইল। mkdirs() পদ্ধতি পাথে সমস্ত অনুপস্থিত ডিরেক্টরি তৈরি করে, যার মধ্যে নেস্টেড ডিরেক্টরিও রয়েছে। নিশ্চিত করুন যে তৈরি অপারেশন সফল হয়েছে — পদ্ধতি শুধুমাত্র নতুন ডিরেক্টরি তৈরি হলে true ফেরত দেয়। তৈরি ব্যর্থতা প্রায়শই /data পার্টিশনে অপর্যাপ্ত স্থান বা ফাইল সিস্টেম ইনোড শেষ হওয়ার সাথে সম্পর্কিত।

kotlin
val imagesDir = File(context.filesDir, "images")
if (imagesDir.mkdirs()) {
    println("ডিরেক্টরি তৈরি করা হয়েছে")
}

val imageFile = File(imagesDir, "photo.jpg")
imageFile.writeBytes(byteArray)

বড় ফাইল লেখার আগে উপলব্ধ স্থান পরীক্ষা করতে, File.getFreeSpace() বা File.getUsableSpace() ব্যবহার করুন। দ্বিতীয় পদ্ধতি নিরাপত্তা কোটা বিবেচনা করে বর্তমান অ্যাপ্লিকেশনের জন্য উপলব্ধ বাইটের সংখ্যা ফেরত দেয় — এটি বহু-ব্যবহারকারী ডিভাইসের প্রসঙ্গে আরও নির্ভুল। উপলব্ধ স্থান প্রত্যাশিত ফাইলের আকারের চেয়ে কম হলে, ব্যবহারকারীকে একটি বার্তা দেখান এবং ডিভাইস সেটিংসে স্থান খালি করার পরামর্শ দিন।

iOS-এ অভ্যন্তরীণ স্টোরেজ নিয়ে কীভাবে কাজ করবেন

iOS-এ, প্রতিটি অ্যাপ্লিকেশন একটি বিচ্ছিন্ন স্যান্ডবক্স কনটেইনারে কাজ করে। সিস্টেম বিশেষ entitlements ছাড়া এর সীমানার বাইরে যাওয়ার জন্য API প্রদান করে না। ফাইল সিস্টেমের সাথে কাজ করার প্রধান টুল হল Foundation ফ্রেমওয়ার্কের FileManager ক্লাস। স্যান্ডবক্স কনটেইনারে বেশ কয়েকটি স্ট্যান্ডার্ড ডিরেক্টরি অন্তর্ভুক্ত রয়েছে, যার প্রতিটির নিজস্ব ব্যাকআপ নীতি রয়েছে।

FileManager-এর মাধ্যমে Documents ডিরেক্টরি অ্যাক্সেস

Documents ডিরেক্টরিটি ব্যবহারকারী ডেটার জন্য যেটি অ্যাপ্লিকেশন চালু হওয়ার মধ্যে সংরক্ষিত থাকা উচিত এবং ব্যাকআপ থেকে পুনরুদ্ধার করা উচিত। iOS স্বয়ংক্রিয়ভাবে এই ডিরেক্টরিটিকে iCloud এবং iTunes ব্যাকআপে অন্তর্ভুক্ত করে। urls(for:in:) পদ্ধতি অনুরোধ করা ডিরেক্টরির URL-এর একটি অ্যারে ফেরত দেয় — অ্যারেতে প্রথম উপাদানটি প্রাথমিক।

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

let fileURL = docs.appendingPathComponent("data.plist")
try data.write(to: fileURL)

FileManager ফাইল অপারেশনের একটি সম্পূর্ণ সেট সমর্থন করে: ফাইল তৈরি, কপি, সরানো, মুছে ফেলা এবং নাম পরিবর্তন করা। প্রতিটি অপারেশন ত্রুটি ছুঁড়তে পারে, তাই সমস্ত কলকে do-catch কনস্ট্রাক্টে মোড়ানো আবশ্যক। ফাইল মুছে ফেলার ক্ষেত্রে বিশেষ মনোযোগ দিন — অপারেশনটি অপরিবর্তনীয়, এবং removeItem(at:)-এর পরে ডেটা পুনরুদ্ধার করা পূর্ববর্তী ব্যাকআপ ছাড়া অসম্ভব।

ব্যাকআপ ব্যতিক্রম ব্যবস্থাপনা

স্যান্ডবক্স কনটেইনারের সমস্ত ডেটা iCloud ব্যাকআপে অন্তর্ভুক্ত করা উচিত নয়। উদাহরণস্বরূপ, ডাউনলোড করা ক্যাশ করা ছবি বা অস্থায়ী প্রক্রিয়াকরণ ফাইলগুলি পুনরুদ্ধার করার প্রয়োজন নেই — এগুলি পরবর্তী ব্যবহারে পুনরায় তৈরি হবে। ব্যাকআপ থেকে একটি ডিরেক্টরি বা ফাইল বাদ দিতে, isExcludedFromBackup অ্যাট্রিবিউট true-এ সেট করুন। Apple সুপারিশ করে যে দূরবর্তীভাবে পুনরুদ্ধার করা যেতে পারে এমন ডেটা সর্বদা ব্যাকআপ থেকে বাদ দিন, iCloud স্টোরেজ ব্যবহার কমাতে এবং পুনরুদ্ধারের সময় কমাতে।

swift
var cacheURL = fm.urls(
    for: .cachesDirectory,
    in: .userDomainMask
).first!
cacheURL.hasExcludedFromBackupKey = true

var values = URLResourceValues()
values.isExcludedFromBackup = true
try cacheURL.setResourceValues(values)

অভ্যন্তরীণ স্টোরেজ, ক্যাশ এবং বাহ্যিক স্টোরেজের মধ্যে পার্থক্য

মোবাইল ডিভাইসে প্রতিটি স্টোরেজ প্রকারের নিজস্ব উদ্দেশ্য এবং ব্যবহারের নিয়ম রয়েছে। এই পার্থক্যগুলি বোঝা ডেভেলপারকে প্রতিটি ধরণের ডেটার জন্য সঠিক স্থান চয়ন করতে সহায়তা করে। নীচে অ্যাপ্লিকেশনের জন্য উপলব্ধ তিনটি প্রধান স্টোরেজ প্রকারের তুলনা দেওয়া হল।

বৈশিষ্ট্যInternal Storageক্যাশ ডিরেক্টরিExternal Storage
অন্যান্য অ্যাপে দৃশ্যমানতালুকানোলুকানোঅ্যাক্সেসযোগ্য
অ্যাপ আনইনস্টলে মুছে ফেলাসম্পূর্ণসম্পূর্ণঅবস্থানের উপর নির্ভর করে
ব্যাকআপAndroid — না, iOS — হ্যাঁ (Documents)নাশুধুমাত্র সিঙ্ক করার সময়
মিডিয়া ছাড়া উপলব্ধতাসর্বদাসর্বদাSD কার্ড প্রয়োজন
ডেটা হারানোর ঝুঁকিসর্বনিম্নউচ্চমাঝারি
প্রস্তাবিত ফাইলের আকার100 MB পর্যন্ত50 MB পর্যন্তযেকোনো

অভ্যন্তরীণ স্টোরেজ অ্যাপ কনফিগারেশন, ডেটাবেস ফাইল এবং ব্যবহারকারীর নথি সংরক্ষণের জন্য সবচেয়ে উপযুক্ত যা অন্যান্য প্রোগ্রামের জন্য অ্যাক্সেসযোগ্য হওয়া উচিত নয়। ক্যাশ ডিরেক্টরি অস্থায়ী ফাইলগুলির জন্য যা পরবর্তী ব্যবহারে পুনরায় তৈরি করা যেতে পারে: ডাউনলোড করা ছবি, API প্রতিক্রিয়া, মধ্যবর্তী প্রক্রিয়াকরণ ডেটা। বাহ্যিক স্টোরেজ বড় মিডিয়া ফাইল (ফটো, ভিডিও, সঙ্গীত) এবং ব্যবহারকারী অন্যান্য অ্যাপ্লিকেশনের সাথে ভাগ করে নিতে চায় এমন ডেটার জন্য সবচেয়ে উপযুক্ত।

স্টোরেজ প্রকার নির্বাচন Google Play এবং App Store-এ অ্যাপ রেটিংকেও প্রভাবিত করে। যে অ্যাপগুলি পরিষ্কার না করে অভ্যন্তরীণ স্টোরেজে প্রচুর পরিমাণে ডেটা সঞ্চয় করে, তারা নেতিবাচক পর্যালোচনা পায়: ব্যবহারকারীরা স্থানের অভাবের অভিযোগ করেন। App Annie-এর একটি গবেষণা অনুসারে, 62% ব্যবহারকারী একটি অ্যাপ মুছে ফেলেন যদি এটি পরিষ্কার করার বিকল্প ছাড়াই ডিভাইসের অভ্যন্তরীণ স্টোরেজের 500 MB-এর বেশি নেয়।

অভ্যন্তরীণ স্টোরেজ ব্যবহারের জন্য সুপারিশ

অ্যাপ অভ্যন্তরীণ স্টোরেজের সঠিক ব্যবস্থাপনা কর্মক্ষমতা, নিরাপত্তা এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করে। নিম্নলিখিত সুপারিশগুলি অফিসিয়াল Android এবং iOS ডকুমেন্টেশন, পাশাপাশি লক্ষ লক্ষ ইনস্টল সহ অ্যাপ্লিকেশন বিকাশের ব্যবহারিক অভিজ্ঞতার উপর ভিত্তি করে।

  • সঞ্চিত ডেটার পরিমাণ কমিয়ে দিন। শুধুমাত্র গুরুত্বপূর্ণ ফাইলগুলির জন্য অভ্যন্তরীণ স্টোরেজ ব্যবহার করুন, বাকিগুলি ক্যাশ বা বাহ্যিক স্টোরেজে রাখুন
  • নিয়মিত অস্থায়ী ফাইল পরিষ্কার করুন। প্রতিটি চালুতে ক্যাশ ডিরেক্টরি পরীক্ষা করুন এবং 24 ঘন্টার বেশি পুরানো ফাইলগুলি মুছুন — এটি সিস্টেম লোড কমায় এবং /data পার্টিশন উপচে পড়া প্রতিরোধ করে
  • গোপনীয় ডেটা এনক্রিপ্ট করুন AndroidX Security লাইব্রেরির EncryptedSharedPreferences বা EncryptedFile ব্যবহার করে। প্লেইন টেক্সটে টোকেন এবং পাসওয়ার্ড সংরক্ষণ করা একটি সাধারণ দুর্বলতা যা রুট অ্যাক্সেস সহ ট্রোজানরা শোষণ করে
  • মাইগ্রেশন ব্যবহার করুন ফাইল কাঠামো আপডেট করার সময়। অ্যাপের নতুন সংস্করণ প্রকাশ করার সময়, পুরানো ফাইলগুলি পরীক্ষা করুন এবং পুরানোগুলি মুছে ফেলার আগে সেগুলিকে নতুন ডিরেক্টরিতে স্থানান্তর করুন

সীমান্ত ক্ষেত্রের পরীক্ষায় বিশেষ মনোযোগ দেওয়া উচিত। অভ্যন্তরীণ স্টোরেজ পূর্ণ হলে, লেখার অপারেশন অপ্রত্যাশিতভাবে বাধাগ্রস্ত হলে (অ্যাপ ক্র্যাশ, ইনকামিং কল), এবং iOS ব্যাকআপ থেকে পুনরুদ্ধার করার সময় অ্যাপ্লিকেশনের আচরণ পরীক্ষা করুন। এই প্রতিটি পরিস্থিতিতে, ডেটা সামঞ্জস্যপূর্ণ থাকা উচিত বা শেষ স্থিতিশীল অবস্থায় পুনরুদ্ধার করা উচিত। লেনদেন ফাইল ব্যবহার করুন: একটি অস্থায়ী ফাইলে ডেটা লিখুন, তারপর এটি পারমাণবিকভাবে লক্ষ্যে নাম পরিবর্তন করুন। এটি লেখা ব্যর্থ হলে দূষিত ডেটা পড়া প্রতিরোধ করে।

ব্যবহারকারী নিয়ন্ত্রণ সম্পর্কে ভুলবেন না। অ্যাপ সেটিংসে অস্থায়ী ডেটা পরিষ্কার করার এবং দখলকৃত অভ্যন্তরীণ স্টোরেজ ভলিউম প্রদর্শনের বিকল্প প্রদান করুন। Google Play Console অনুসারে, এই বৈশিষ্ট্যযুক্ত অ্যাপগুলি “কর্মক্ষমতা” বিভাগে 18% বেশি ইতিবাচক পর্যালোচনা পায়।

প্রায়শই জিজ্ঞাসিত প্রশ্ন

অ্যাপ আনইনস্টল করার পর Internal Storage-এর কী হয়?

অ্যাপের অভ্যন্তরীণ স্টোরেজ থেকে সমস্ত ডেটা সম্পূর্ণরূপে মুছে ফেলা হয়। অপারেটিং সিস্টেম ডেটাবেস, সেটিংস এবং অস্থায়ী ফাইল সহ অবশিষ্ট ফাইলের অনুপস্থিতির গ্যারান্টি দেয়। বাহ্যিক স্টোরেজের ডেটা থাকতে পারে।

অন্য কোনো অ্যাপ কি আমার Internal Storage থেকে ফাইল পড়তে পারে?

ডিভাইসে রুট অ্যাক্সেস ছাড়া, অন্যান্য অ্যাপ অন্য অ্যাপের Internal Storage থেকে ফাইল পড়তে পারে না। Android-এ, এর জন্য সুপারইউজার বিশেষাধিকার প্রয়োজন, যখন iOS-এ, স্যান্ডবক্সের মাধ্যমে কার্নেল স্তরে বিচ্ছিন্নতা প্রয়োগ করা হয়।

অভ্যন্তরীণ মেমরিতে সর্বোচ্চ কত ডেটা সংরক্ষণ করা যেতে পারে?

কোনও স্পষ্ট সীমা নেই, তবে মোট পরিমাণ /data পার্টিশনে উপলব্ধ স্থান দ্বারা সীমাবদ্ধ। প্রতি অ্যাপ্লিকেশনে 100 MB-এর বেশি না রাখার পরামর্শ দেওয়া হয় — বড় ভলিউম বাহ্যিক স্টোরেজ বা ক্লাউডে রাখা ভাল।

Android-এ filesDir এবং cacheDir-এর মধ্যে পার্থক্য কী?

filesDir স্থায়ী অ্যাপ ডেটার জন্য এবং সিস্টেম এটি প্রয়োজন হলেই মুছে ফেলে। cacheDir অস্থায়ী ফাইলগুলির জন্য যা সিস্টেম মেমরি কম হলে মুছে ফেলতে পারে। সিস্টেম cacheDir-এর স্থায়িত্বের গ্যারান্টি দেয় না।

Internal Storage থেকে SD কার্ডে ডেটা কীভাবে স্থানান্তর করবেন?

Internal Storage থেকে SD কার্ডে সরাসরি অনুলিপি নিরাপত্তা নীতি দ্বারা নিষিদ্ধ। ব্যবহারকারীর সম্মতিতে শেয়ার্ড স্টোরেজে ডেটার কপি তৈরি করতে Android 10+ এ MediaStore API বা SAF (Storage Access Framework) ব্যবহার করুন।

সারাংশ

  • Internal Storage — প্রতিটি অ্যাপ্লিকেশনের বিচ্ছিন্ন ডিরেক্টরি, অন্যান্য প্রোগ্রাম এবং ব্যবহারকারীর অ্যাক্সেস থেকে সুরক্ষিত
  • Android এবং iOS-এ স্যান্ডবক্স আর্কিটেকচার নিশ্চিত করে যে বিভিন্ন অ্যাপের ডেটা ওভারল্যাপ না হয় এবং রুট অ্যাক্সেস ছাড়া পড়া না যায়
  • স্টোরেজ পদ্ধতি নির্বাচন ডেটা প্রকারের উপর নির্ভর করে: filesDir-এর মাধ্যমে ফাইল, DataStore-এর মাধ্যমে সেটিংস, Room-এর মাধ্যমে কাঠামোবদ্ধ ডেটা
  • iOS স্যান্ডবক্স একটি ব্যাকআপ নীতি অন্তর্ভুক্ত করে যা অ-গুরুত্বপূর্ণ ডেটার জন্য isExcludedFromBackup অ্যাট্রিবিউটের মাধ্যমে নিয়ন্ত্রণ করা উচিত
  • ক্যাশ থেকে পার্থক্য ডেটা স্থিরতার গ্যারান্টিতে: Internal Storage সিস্টেম দ্বারা মুছে ফেলা হয় না, cacheDir-এর বিপরীতে যা মেমরি কম হলে পরিষ্কার হতে পারে
  • অভ্যন্তরীণ স্টোরেজে প্রস্তাবিত ডেটা পরিমাণ — 100 MB পর্যন্ত। বড় ফাইলগুলি বাহ্যিক স্টোরেজ বা ক্লাউড পরিষেবায় রাখা উচিত
  • ব্যবহারকারী নিয়ন্ত্রণ দখলকৃত স্থানের উপর এবং ডেটা পরিষ্কার করার ক্ষমতা স্টোরগুলিতে আস্থা এবং অ্যাপ রেটিং বাড়ায়

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

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

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

আরও পড়ুন