Android-Data

Android文件系統入門知識

內外存儲的由來:因爲歷史原因,老版本的Android手機可用容量小, 加載外部存儲設備以便加大容量, 如sdcard. 後來隨着技術的不斷提高, 手機本身的容量逐漸加大, 但是這個分法一直保留了下來.

二者區別

  • 內部存儲

    不需要權限

    其它APP不可訪問, 用戶也不能操作

    卸載APP時會移除內部存儲數據

  • 外部存儲

    首先要確認可訪問性, 因爲外部存儲可卸載

    其它APP可以訪問

    需要權限

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

內部存儲簡單介紹

所在路徑: Android 6.0在/data/user/0/package_name/

其它版本也對應在/data/下的某個地方, 以包名作爲區分, 未root的文件管理中查看不了

使用:

在繼承自ContextWrapper中, 如Activity, Application

//得到文件對象
File file = getFilesDir();

String inPath = file.getAbsolutePath();

Log.d("test-file","getFileDir:"+ inPath);

//在inPath中寫入hello
FileOutputStream fileOutputStream = openFileOutput("hello.txt", MODE_PRIVATE);
fileOutputStream.write("hello".getBytes());

fileOutputStream.close();

外部存儲簡單介紹

通過android.os包中的Environment類

//判斷文件可用性
/* 可寫 */
public boolean isExternalStorageWritable() {
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)) {
        return true;
    }
    return false;
}

/* 可讀 */
public boolean isExternalStorageReadable() {
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state) ||
        Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
        return true;
    }
    return false;
}

//得到外部存儲私有對象(File),會隨着APP的卸載而卸載
Environment.getExternalStorageDirectory();

//得到外部存儲公共對象, 文件不會隨着APP的卸載而卸載
//傳入的參數代表文件類型 如Environment.DIRECTORY_MUSIC 代表音樂
//DIRECTORY_RINGTONES 代表鈴音
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC));

得到File對象後, 你就可以爲所欲爲

File類

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