ডেটা এবং ফাইল স্টোরেজ ওভারভিউ

অ্যান্ড্রয়েড এমন একটি ফাইল সিস্টেম ব্যবহার করে যা অন্যান্য প্ল্যাটফর্মের ডিস্ক-ভিত্তিক ফাইল সিস্টেমের মতো। সিস্টেমটি আপনার অ্যাপ ডেটা সংরক্ষণ করার জন্য বেশ কয়েকটি বিকল্প প্রদান করে:

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

এই বিকল্পগুলির বৈশিষ্ট্যগুলি নিম্নলিখিত সারণীতে সংক্ষিপ্ত করা হয়েছে:

কন্টেন্টের ধরণ অ্যাক্সেস পদ্ধতি অনুমতি প্রয়োজন অন্যান্য অ্যাপ কি অ্যাক্সেস করতে পারে? অ্যাপ আনইনস্টল করার সময় ফাইলগুলি সরানো হয়েছে?
অ্যাপ-নির্দিষ্ট ফাইল শুধুমাত্র আপনার অ্যাপ ব্যবহারের জন্য তৈরি ফাইলগুলি অভ্যন্তরীণ স্টোরেজ থেকে, getFilesDir() অথবা getCacheDir()

বাহ্যিক সঞ্চয়স্থান থেকে, getExternalFilesDir() বা getExternalCacheDir()
অভ্যন্তরীণ সঞ্চয়স্থানের জন্য কখনও প্রয়োজন হয় না

যখন আপনার অ্যাপটি Android 4.4 (API লেভেল 19) বা তার বেশি ভার্সন চালিত ডিভাইসে ব্যবহার করা হয় তখন বাহ্যিক স্টোরেজের প্রয়োজন হয় না
না হাঁ
মিডিয়া শেয়ারযোগ্য মিডিয়া ফাইল (ছবি, অডিও ফাইল, ভিডিও) MediaStore এপিআই Android 11 (API লেভেল 30) বা তার বেশি সংস্করণে অন্যান্য অ্যাপের ফাইল অ্যাক্সেস করার সময় READ_EXTERNAL_STORAGE

Android 10 (API লেভেল 29) এ অন্যান্য অ্যাপের ফাইল অ্যাক্সেস করার সময় READ_EXTERNAL_STORAGE অথবা WRITE_EXTERNAL_STORAGE

অ্যান্ড্রয়েড ৯ (এপিআই লেভেল ২৮) বা তার নিচের ভার্সনের সকল ফাইলের জন্য অনুমতি প্রয়োজন।
হ্যাঁ, যদিও অন্য অ্যাপটির READ_EXTERNAL_STORAGE অনুমতি প্রয়োজন। না
ডকুমেন্ট এবং অন্যান্য ফাইল ডাউনলোড করা ফাইল সহ অন্যান্য ধরণের শেয়ারযোগ্য সামগ্রী স্টোরেজ অ্যাক্সেস ফ্রেমওয়ার্ক কোনটিই নয় হ্যাঁ, সিস্টেম ফাইল পিকারের মাধ্যমে না
অ্যাপ পছন্দসমূহ কী-মান জোড়া জেটপ্যাক পছন্দের লাইব্রেরি কোনটিই নয় না হাঁ
ডাটাবেস কাঠামোগত তথ্য রুম পারসিস্টেন্স লাইব্রেরি কোনটিই নয় না হাঁ

আপনার নির্দিষ্ট চাহিদার উপর নির্ভর করে আপনি কোন সমাধানটি বেছে নেবেন:

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

স্টোরেজ অবস্থানের বিভাগ

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

অপসারণযোগ্য ভলিউম, যেমন একটি SD কার্ড, ফাইল সিস্টেমে বহিরাগত স্টোরেজের অংশ হিসাবে উপস্থিত হয়। অ্যান্ড্রয়েড এই ডিভাইসগুলিকে /sdcard এর মতো একটি পাথ ব্যবহার করে উপস্থাপন করে।

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

<manifest ...
  android:installLocation="preferExternal">
  ...
</manifest>

অনুমতি এবং বহিরাগত স্টোরেজ অ্যাক্সেস

অ্যান্ড্রয়েড নিম্নলিখিত স্টোরেজ-সম্পর্কিত অনুমতিগুলি সংজ্ঞায়িত করে: READ_EXTERNAL_STORAGE , WRITE_EXTERNAL_STORAGE , এবং MANAGE_EXTERNAL_STORAGE

অ্যান্ড্রয়েডের পূর্ববর্তী সংস্করণগুলিতে, অ্যাপগুলিকে বহিরাগত স্টোরেজে অ্যাপ-নির্দিষ্ট ডিরেক্টরিগুলির বাইরে যেকোনো ফাইল অ্যাক্সেস করার জন্য READ_EXTERNAL_STORAGE অনুমতি ঘোষণা করতে হত। এছাড়াও, অ্যাপ-নির্দিষ্ট ডিরেক্টরির বাইরে যেকোনো ফাইলে লেখার জন্য অ্যাপগুলিকে WRITE_EXTERNAL_STORAGE অনুমতি ঘোষণা করতে হত।

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

অ্যান্ড্রয়েড ১১ MANAGE_EXTERNAL_STORAGE অনুমতি চালু করেছে, যা অ্যাপ-নির্দিষ্ট ডিরেক্টরি এবং MediaStore বাইরের ফাইলগুলিতে লেখার অ্যাক্সেস প্রদান করে। এই অনুমতি সম্পর্কে আরও জানতে এবং কেন বেশিরভাগ অ্যাপকে তাদের ব্যবহারের ক্ষেত্রে এটি ঘোষণা করার প্রয়োজন হয় না, স্টোরেজ ডিভাইসে সমস্ত ফাইল কীভাবে পরিচালনা করবেন তার নির্দেশিকাটি দেখুন।

বিস্তৃত স্টোরেজ

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

স্কোপড স্টোরেজ ব্যবহার করুন যদি না আপনার অ্যাপের এমন কোনও ফাইলে অ্যাক্সেসের প্রয়োজন হয় যা একটি অ্যাপ-নির্দিষ্ট ডিরেক্টরির বাইরে এবং MediaStore API গুলি অ্যাক্সেস করতে পারে এমন কোনও ডিরেক্টরির বাইরে সংরক্ষণ করা হয়। আপনি যদি অ্যাপ-নির্দিষ্ট ফাইলগুলিকে বাহ্যিক স্টোরেজে সঞ্চয় করেন, তাহলে আপনি এই ফাইলগুলিকে বাহ্যিক স্টোরেজে একটি অ্যাপ-নির্দিষ্ট ডিরেক্টরিতে রেখে স্কোপড স্টোরেজ গ্রহণ করা সহজ করতে পারেন। এইভাবে, স্কোপড স্টোরেজ সক্ষম থাকা অবস্থায় আপনার অ্যাপ এই ফাইলগুলিতে অ্যাক্সেস বজায় রাখে।

আপনার অ্যাপটিকে স্কোপড স্টোরেজের জন্য প্রস্তুত করতে, স্টোরেজ ব্যবহারের কেস এবং সেরা অনুশীলন নির্দেশিকা দেখুন। যদি আপনার অ্যাপের অন্য কোনও ব্যবহারের কেস থাকে যা স্কোপড স্টোরেজের আওতায় পড়ে না, তাহলে একটি বৈশিষ্ট্য অনুরোধ দাখিল করুন । আপনি অস্থায়ীভাবে স্কোপড স্টোরেজ ব্যবহার বন্ধ করতে পারেন।

ডিভাইসে ফাইল দেখুন

কোনও ডিভাইসে সংরক্ষিত ফাইলগুলি দেখতে, Android Studio-এর Device File Explorer ব্যবহার করুন।

অতিরিক্ত সম্পদ

ডেটা স্টোরেজ সম্পর্কে আরও তথ্যের জন্য, নিম্নলিখিত সংস্থানগুলি দেখুন।

ভিডিও