কম্পিউটার টিউটোরিয়াল

Android-এ অ্যাপের ক্যাশ ডিরেক্টরি (Cache Directory) পাওয়ার উপায়

getCacheDir() ব্যবহার করে অ্যাপ্লিকেশন ক্যাশ ফোল্ডার পাথ বের করা

Android-এ প্রতিটি অ্যাপের একটি প্রাইভেট ক্যাশ ডিরেক্টরি থাকে যেখানে অস্থায়ী ফাইল সংরক্ষণ করা হয়। এটি Context.getCacheDir() মেথড দিয়ে পাওয়া যায়। সিস্টেম স্টোরেজ ফুল হলে এই ফাইলগুলো অটোমেটিক্যালি ডিলিট করতে পারে।

লেআউট (activity_main.xml)

<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    android:padding="16dp">

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:padding="16dp"
        android:textAlignment="center" />

</LinearLayout>

MainActivity.java

package com.example.myapplication;

import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import java.io.File;

public class MainActivity extends AppCompatActivity {

    TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView = findViewById(R.id.text);

        // ইন্টারনাল ক্যাশ ডিরেক্টরি
        File cacheDir = getCacheDir();
        String cachePath = cacheDir.getAbsolutePath();

        // এক্সটার্নাল ক্যাশ ডিরেক্টরি (SD Card / External Storage)
        File externalCacheDir = getExternalCacheDir();
        String externalCachePath = (externalCacheDir != null) ? externalCacheDir.getAbsolutePath() : "Unavailable";

        // ক্যাশ সাইজ ক্যালকুলেট (অপশনাল)
        long cacheSize = getDirSize(cacheDir);
        long externalCacheSize = (externalCacheDir != null) ? getDirSize(externalCacheDir) : 0;

        String info = "Internal Cache Dir:\n" + cachePath +
                      "\n\nSize: " + formatSize(cacheSize) +
                      "\n\nExternal Cache Dir:\n" + externalCachePath +
                      "\n\nSize: " + formatSize(externalCacheSize) +
                      "\n\nNote: System may delete these files when storage is low.";

        textView.setText(info);
    }

    // ডিরেক্টরি সাইজ রিকার্সিভলি ক্যালকুলেট
    private long getDirSize(File dir) {
        long size = 0;
        File[] files = dir.listFiles();
        if (files != null) {
            for (File file : files) {
                if (file.isFile()) size += file.length();
                else size += getDirSize(file);
            }
        }
        return size;
    }

    // বাইটকে মানব পঠনীয় ফরম্যাটে রূপান্তর
    private String formatSize(long bytes) {
        if (bytes < 1024) return bytes + " B";
        int exp = (int) (Math.log(bytes) / Math.log(1024));
        String unit = "KMGTPE".charAt(exp - 1) + "B";
        return String.format("%.1f %s", bytes / Math.pow(1024, exp), unit);
    }
}

ক্যাশ ডিরেক্টরির পার্থক্য

টাইপমেথডলোকেশনব্যাকআপঅটো ক্লিন
Internal CachegetCacheDir()/data/data/pkg/cacheহ্যাঁ (Auto Backup)হ্যাঁ (Storage Pressure)
External CachegetExternalCacheDir()/sdcard/Android/data/pkg/cacheনাহ্যাঁ (App Uninstall-এও ডিলিট)
Files DirgetFilesDir()/data/data/pkg/filesহ্যাঁনা (Manual)
External FilesgetExternalFilesDir()/sdcard/Android/data/pkg/filesনানা (App Uninstall-এ ডিলিট)

সর্বোত্তম অভ্যাস

  • ক্যাশে বড় ফাইল (ইমেজ, ভিডিও) না রাখুন - ১০-৫০ MB লিমিট রাখুন
  • LruCache বা DiskLruCache লাইব্রেরি ব্যবহার করুন ইমেজ ক্যাশিংয়ের জন্য
  • WorkManager-এ PeriodicWorkRequest দিয়ে ক্যাশ ক্লিনআপ শিডিউল করুন
  • সেনসিটিভ ডেটা ক্যাশে না রাখুন (ইনক্রিপ্ট করুন যদি জরুরি হয়)

Android-এ অ্যাপের ক্যাশ ডিরেক্টরি (Cache Directory) পাওয়ার উপায়

  1. এন্ড্রয়েডে সিস্টেম ডেটা ডিরেক্টরি ইনফরমেশন পাওয়ার উপায়

  2. এন্ড্রয়েডে রুট ডিরেক্টরি ইনফরমেশন পাওয়ার উপায়

  3. অ্যান্ড্রয়েডে চলমান অ্যাপ্লিকেশন তালিকা পাওয়ার উপায়

  4. এন্ড্রয়েডে প্রোগ্রামেটিক্যালি বর্তমান GPS লোকেশন কীভাবে পাবেন?