บทนำ
ตัวอย่างนี้สาธิตวิธีดึงข้อมูลไดเรกทอรีข้อมูลของระบบ (System Data Directory) โดยใช้ Environment.getDataDirectory() ซึ่งเป็นเส้นทางที่แอปพลิเคชันเก็บข้อมูลส่วนตัว (Internal Storage)
ขั้นตอนที่ 1: สร้างโปรเจกต์
Android Studio → File → New Project → Empty Activity
ขั้นตอนที่ 2: Layout (activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:app="https://schemas.android.com/apk/res-auto"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
tools:context=".MainActivity">
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textSize="30sp" />
</LinearLayout>
ขั้นตอนที่ 3: โค้ดหลัก (MainActivity.java)
package com.example.myapplication;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView textView;
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.text);
// ดึงชื่อโฟลเดอร์ Data Directory (เช่น "data")
textView.setText(Environment.getDataDirectory().getName());
// หรือดึง Full Path
// textView.setText(Environment.getDataDirectory().getAbsolutePath());
}
@Override
protected void onStop() {
super.onStop();
}
@Override
protected void onResume() {
super.onResume();
}
}
ผลลัพธ์

Environment Directory Methods สำคัญ
| เมธอด | คืนค่า | คำอธิบาย | ตัวอย่าง |
|---|---|---|---|
getDataDirectory() | File | System Data Directory (/data) | /data |
getRootDirectory() | File | System Root Directory (/system) | /system |
getExternalStorageDirectory() | File | Primary Shared Storage (Deprecated API 29+) | /storage/emulated/0 |
getDownloadCacheDirectory() | File | Cache Directory สำหรับ Download (Deprecated) | /cache |
ไดเรกทอรีที่เกี่ยวข้องกับแอป (App-Specific)
แทนที่จะใช้ Environment โดยตรง ควรใช้ Context Methods:
| เมธอด (Context) | เส้นทาง | ใช้สำหรับ |
|---|---|---|
getFilesDir() | /data/data/pkg/files | ไฟล์ส่วนตัวของแอป (Private) |
getCacheDir() | /data/data/pkg/cache | Cache ไฟล์ชั่วคราว (ระบบอาจลบ) |
getExternalFilesDir() | /storage/emulated/0/Android/data/pkg/files | ไฟล์บน Shared Storage (App-specific) |
getExternalCacheDir() | /storage/emulated/0/Android/data/pkg/cache | Cache บน Shared Storage |
หมายเหตุสำคัญ (Scoped Storage - Android 10+)
getExternalStorageDirectory()ถูก Deprecated ตั้งแต่ API 29- แอปเข้าถึงได้เฉพาะ App-Specific Directory (ไม่ต้องขอ Permission)
- เข้าถึงไฟล์ของแอปอื่น ต้องใช้
MediaStoreหรือStorage Access Framework - ใช้
context.getExternalFilesDir(null)แทนสำหรับไฟล์ที่ผู้ใช้ควรเข้าถึงได้
โค้ดแนะนำ (Context-based)
// Internal Storage (Private) File filesDir = getFilesDir(); // /data/data/com.example.myapplication/files File cacheDir = getCacheDir(); // /data/data/com.example.myapplication/cache // External Storage (App-specific, No Permission needed) File extFilesDir = getExternalFilesDir(null); // /storage/emulated/0/Android/data/com.example.myapplication/files File extCacheDir = getExternalCacheDir();