Android學習筆記(八)——數據存儲(SD卡文件操作)

本文實例講述Android開發之SD卡文件操作。分享給大家供大家參考,具體如下:
爲了正常的操作SD卡,需要在AndroidManifeat.xml中聲明SD卡的權限:添加代碼如下:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAG" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

添加以上的代碼後:
我們首先獲取SD卡信息是通過Environment類來實現的,該類是App獲取各種目錄信息的工具,一些常用的方法如下:

方法 功能
getRootDirectory 得到系統根目錄的路徑
getDataDirectory 得到系統數據目錄的路徑
getDownloadCacheDirectory 得到下載緩存目錄的路徑
getExternalStorageDirectory 獲取外部存儲(SD卡)的路徑
getExternalStorageState 獲取SD卡的狀態
getExternalStoragePublicDirectory 獲取SD卡指定類型目錄的路徑
getStorageState 獲得指定目錄的狀態

爲了更好的瞭解上面的方法,下面用一個測試案例來展示效果:

佈局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:orientation="vertical"
    android:padding="10dp" >
    <TextView
        android:id="@+id/tv_file_basic"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="@color/black"
        android:textSize="17sp" />
</LinearLayout>

java文件:

package cn.edu.hznu.demo;
import android.annotation.TargetApi;
import android.os.Build;
import android.os.Build.VERSION;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
public class FileBasicActivity extends AppCompatActivity {
    private TextView tv_file_basic;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_file_basic);
        tv_file_basic = (TextView) findViewById(R.id.tv_file_basic);
        getEnvironmentInfo();
    }
    @TargetApi(Build.VERSION_CODES.KITKAT)
    private void getEnvironmentInfo() {
        String desc = "系統環境(含SD卡)的信息如下:";
        desc = String.format("%s\n 根目錄路徑:%s", desc,
                Environment.getRootDirectory().getAbsolutePath());
        desc = String.format("%s\n 數據目錄路徑:%s", desc,
                Environment.getDataDirectory().getAbsolutePath());
        desc = String.format("%s\n 下載緩存目錄路徑:%s", desc,
                Environment.getDownloadCacheDirectory().getAbsolutePath());
        desc = String.format("%s\n 外部存儲(即SD卡)目錄路徑:%s", desc,
                Environment.getExternalStorageDirectory().getAbsolutePath());
        desc = String.format("%s\n 外部存儲(即SD卡)狀態:%s", desc,
                Environment.getExternalStorageState());
        desc = String.format("%s\n SD卡的相機目錄路徑:%s", desc,
                Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM));
        if (VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            desc = String.format("%s\n SD卡的文錄路徑:%s", desc,
                    Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS));
        }
        desc = String.format("%s\n SD卡的下載目錄路徑:%s", desc,
                Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS));
        desc = String.format("%s\n SD卡的圖片目錄路徑:%s", desc,
                Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES));
        desc = String.format("%s\n SD卡的視頻目錄路徑:%s", desc,
                Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES));
        desc = String.format("%s\n SD卡的音樂目錄路徑:%s", desc,
                Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC));
        tv_file_basic.setText(desc);
    }
}

測試結果如下:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章