কম্পিউটার

অ্যান্ড্রয়েড স্টোরেজের একটি ওভারভিউ

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

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

এই নিবন্ধে আমরা যা কভার করতে যাচ্ছি তা হল:

  1. অ্যান্ড্রয়েড ফোনে বিভিন্ন ধরনের স্টোরেজ
  2. সঞ্চয়স্থানের প্রকারের মধ্যে পার্থক্য
  3. কিভাবে আপনার অ্যাপ্লিকেশনে স্টোরেজ ব্যবহার করবেন

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

আমরা শুরু করার আগে, স্টোরেজ এবং ক্যাশে সম্পর্কে একটি জিনিস অবশ্যই বলা উচিত। স্টোরেজ বোঝানো হয় সেই জিনিসগুলির জন্য যা আপনি ক্রমাগতভাবে সংরক্ষণ করতে চান, যখন ক্যাশে অস্থায়ীভাবে জিনিসগুলি সংরক্ষণ করতে চান৷

অ্যান্ড্রয়েড স্টোরেজের একটি ওভারভিউ
ফটো এরদা এস্ট্রেমেরা / আনস্প্ল্যাশ

অভ্যন্তরীণ সঞ্চয়স্থান

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

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

তাহলে, কিভাবে আমরা অভ্যন্তরীণ সঞ্চয়স্থানে একটি ফাইল সংরক্ষণ করব?

public void saveFileInternalStorage() {
   
        String FILENAME = "hello_world_file";
        String inputToFile = "Hello From Internal Storage!";
   
        try {
            FileOutputStream fileOutputStream = openFileOutput(FILENAME, Context.MODE_PRIVATE);
            fileOutputStream.write(inputToFile.getBytes());
            fileOutputStream.close();
            Toast.makeText(getApplicationContext(),
                    "File " + FILENAME + " has been saved successfully",
                    Toast.LENGTH_SHORT).show();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            Toast.makeText(getApplicationContext(),
                    "File " + FILENAME + " has not been saved successfully due to an exception " + e.getLocalizedMessage(),
                    Toast.LENGTH_SHORT).show();
        } catch (IOException e) {
            e.printStackTrace();
            Toast.makeText(getApplicationContext(),
                    "File " + FILENAME + " has not been saved successfully due to an exception " + e.getLocalizedMessage(),
                    Toast.LENGTH_SHORT).show();
        }
 }
hello_world_file নামে একটি ফাইল সংরক্ষণ করা হচ্ছে

আপনি কোড উদাহরণে দেখতে পাচ্ছেন, আমরা hello_world_file নামে একটি ফাইল সংরক্ষণ করছি যেটিতে পাঠ্য রয়েছে, “অভ্যন্তরীণ স্টোরেজ থেকে হ্যালো!” . এটি করার চেষ্টা করার সময় যে ব্যতিক্রমগুলি ঘটতে পারে তা প্রদর্শন করার জন্য আমি দুটি ক্যাচ ক্লজ তৈরি করেছি, তবে আপনি সাধারণ ব্যতিক্রম বস্তুর সাথে একটি ক্যাচ ক্লজে সেগুলিকে ছোট করতে পারেন৷

openFileOutput পদ্ধতিতে মনোযোগ দিন যদি এটি ইতিমধ্যেই বিদ্যমান থাকে তবে ফাইলটি খুলবে, কিন্তু যদি না থাকে তবে এটি তৈরি করবে। এই পদ্ধতির দ্বিতীয় প্যারামিটার হল ফাইল মোড। এই প্যারামিটারটি ফাইলের সুযোগ এবং এটিতে অ্যাক্সেস নির্ধারণ করে। ডিফল্ট মান হল MODE_PRIVATE, যা ফাইলটিকে শুধুমাত্র আপনার অ্যাপ্লিকেশনে অ্যাক্সেসযোগ্য করে তোলে৷

এই প্যারামিটারের জন্য অন্য দুটি মান হল MODE_WORLD_READABLE এবং MODE_WORLD_WRITEABLE, কিন্তু এগুলি API 17 থেকে অবমূল্যায়িত করা হয়েছে৷ অন্যান্য অ্যাপ্লিকেশনগুলির সাথে ব্যক্তিগত ফাইলগুলি ভাগ করা একটি ভিন্ন যুক্তি ব্যবহার করে যা আপনি এখানে আরও পড়তে পারেন৷ অবশেষে, ফাইলে লেখার সময়, আমরা আমাদের স্ট্রিংকে বাইটে রূপান্তর করি এবং আমরা শেষ পর্যন্ত ফাইলটি বন্ধ করার বিষয়টি নিশ্চিত করি।

অ্যান্ড্রয়েড স্টোরেজের একটি ওভারভিউ
মার্কাস স্পিসকের ছবি / আনস্প্ল্যাশ

বাহ্যিক সঞ্চয়স্থান

নামটি যা বোঝায় তার বিপরীতে, এটি এমন স্টোরেজ যা এই সত্য দ্বারা সংজ্ঞায়িত করা হয় যে এটি সর্বদা অ্যাক্সেসযোগ্য নয়। এর অর্থ হতে পারে যে এটি একটি বাহ্যিক SD কার্ড (সেকেন্ডারি বাহ্যিক সঞ্চয়স্থান) হতে পারে, তবে এটি ডিভাইসে (প্রাথমিক বাহ্যিক সঞ্চয়স্থান) পাওয়া যায়।

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

বাহ্যিক সঞ্চয়স্থানে ফাইলগুলি কীভাবে সংরক্ষণ করতে হয় তা প্রদর্শন করার আগে, আমাদের দুটি জিনিস করতে হবে:

  1. ফাইল সংরক্ষণ করার জন্য সেখানে পর্যাপ্ত স্থান আছে তা নিশ্চিত করুন
  2. রানটাইমের সময় অনুমতি চাও

পর্যাপ্ত সঞ্চয়স্থান রয়েছে তা নিশ্চিত করার জন্য কোডের নিম্নলিখিত লাইনগুলির প্রয়োজন:

//Check if you can read/write to external storage
public boolean isExternalStorageWritable() {
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)) {
        return true;
    }
    return false;
}
আমরা বহিরাগত স্টোরেজে লিখতে এবং পড়তে পারি কিনা তা পরীক্ষা করা হচ্ছে

বাহ্যিক সঞ্চয়স্থানে অ্যাক্সেস পেতে, আমাদের AndroidManifest.xml-এ নিম্নলিখিত অনুমতি যোগ করতে হবে:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
বাহ্যিক স্টোরেজ অনুমতি লিখুন

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

public void saveFileExternalStorage(View view) {
        if (isExternalStorageWritable()) {
            if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) ==
                PackageManager.PERMISSION_GRANTED) {
                    writeFileToExternalStorage();
                } else{
                    ActivityCompat.requestPermissions(this,
                            new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 0);
                }
            }
        }

        @Override
        public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
            switch (requestCode) {
                case 0:
                {
                    writeFileToExternalStorage();
                    break;
                }
            }
        }
ব্যবহারকারী অনুমতি দিয়েছে কিনা তা পরীক্ষা করুন

আমাদের writeFileToExternalStorage এই মত দেখায়:

public void writeFileToExternalStorage() {
            String root = Environment.getExternalStorageDirectory().toString();
            File myDir = new File(root + "/saved_files");
            if (!myDir.exists()) {
                myDir.mkdirs();
            }
            try {
                File file = new File(myDir, "myfile.txt");
                FileOutputStream out = new FileOutputStream(file);
                out.write(inputToFile.getBytes());
                out.close();
                Toast.makeText(getApplicationContext(),
                        "File myfile.txt" + " has been saved successfully to external storage",
                        Toast.LENGTH_SHORT).show();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
বাহ্যিক সঞ্চয়স্থানে একটি ফাইল লিখুন

আপনি যদি এখানে উপস্থাপিত সমস্ত কোডের একটি উদাহরণ দেখতে চান তবে আপনি এই GitHub সংগ্রহস্থলে যেতে পারেন৷

অ্যান্ড্রয়েড স্টোরেজের একটি ওভারভিউ
স্টিভ জনসন / আনস্প্ল্যাশের ছবি

জানা ভালো

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

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

এই বৈশিষ্ট্যের জন্য তিনটি মান রয়েছে:

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

স্বয়ংক্রিয় এবং পছন্দের বাহ্যিক বিকল্প উভয়ের জন্য, ব্যবহারকারীর কাছে অ্যাপ্লিকেশনটিকে বাহ্যিক সঞ্চয়স্থান থেকে অভ্যন্তরীণ এবং এর বিপরীতে সরানোর বিকল্প রয়েছে৷

মনে রাখবেন যে একবার একজন ব্যবহারকারী তাদের ডিভাইসটিকে একটি কম্পিউটারের সাথে সংযুক্ত করে এবং এটিকে ডেটা ভাগ করতে সক্ষম করে বা একটি SD কার্ড আনমাউন্ট করে, বাহ্যিক সঞ্চয়স্থান থেকে চলমান সমস্ত অ্যাপ্লিকেশন ধ্বংস হয়ে যায়৷ যদি আপনার অ্যাপ্লিকেশন নিম্নলিখিত বৈশিষ্ট্যগুলির মধ্যে একটি ব্যবহার করে, তাহলে আপনার এটিকে বাহ্যিক সঞ্চয়স্থানে ইনস্টল করা উচিত নয়:

বিভিন্ন পরিষেবা (অ্যালার্ম পরিষেবা sবিশেষত), ইনপুট মেথড ইঞ্জিন, লাইভ ওয়ালপেপার, অ্যাপ্লিকেশন উইজেট, অ্যাকাউন্ট ম্যানেজার, সিঙ্ক অ্যাডাপ্টার, ডিভাইস অ্যাডমিনিস্ট্রেটর এবং ব্রডকাস্ট রিসিভারগুলি বুট করার জন্য শুনছেন।

  1. অ্যান্ড্রয়েডের জন্য 5টি ফাইল রূপান্তর অ্যাপ

  2. অ্যান্ড্রয়েডে ওয়ালপেপার হিসাবে একটি GIF ফাইল কীভাবে ব্যবহার করবেন

  3. Android এ .estrongs কিভাবে ব্যবহার করবেন

  4. অ্যান্ড্রয়েড ফোন স্টোরেজ পরিচালনার জন্য ফাইল ম্যানেজার কি যথেষ্ট