安卓檔案儲存體使用參考

來源:互聯網
上載者:User

可能遇到的問題

android系統自身內建有儲存,另外也可以通過sd卡來擴充儲存空間。前者好比pc中的硬碟,後者好移動硬碟。 前者空間較小,後者空間大,但後者不一定可用。 開發應用,處理本機資料存取時,可能會遇到這些問題:

基本操作儲存的用量情況
  • 根據系統使用者不同,所能佔用的儲存空間大小也有不同

    在API level 9及其以上時,File對象的getFreeSpace()方法擷取系統root使用者可用空間;

    getUsableSpace()取非root使用者可用空間

  • 當有多個儲存可用時擷取磁碟用量,根據當前系統情況選用合適的儲存。

  • 根據系統儲存用量,合理設定app所用的空間大小;運行時,也可做動態調整。

  • 在API level 9及其以上的系統,可直接調用File對象的相關方法,以下需自行計算:

    @TargetApi(VERSION_CODES.GINGERBREAD)public static long getUsableSpace(File path) {    if (path == null) {        return -1;    }    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {        return path.getUsableSpace();    } else {        if (!path.exists()) {            return 0;        } else {            final StatFs stats = new StatFs(path.getPath());            return (long) stats.getBlockSize() * (long) stats.getAvailableBlocks();        }    }}
路徑的規律

一般地,通過ContextEnvironment相關的方法擷取檔案存取的路徑。

通過這兩個類可擷取各種路徑,

    ($rootDir)+- /data                -> Environment.getDataDirectory()|   ||   |   ($appDataDir)|   +- data/com.srain.cube.sample|       ||       |   ($filesDir)|       +- files            -> Context.getFilesDir() / Context.getFileStreamPath("")|       |       ||       |       +- file1    -> Context.getFileStreamPath("file1")|       |   ($cacheDir)|       +- cache            -> Context.getCacheDir()|       ||       +- app_$name        ->(Context.getDir(String name, int mode)||   ($rootDir)+- /storage/sdcard0     -> Environment.getExternalStorageDirectory()    |                       / Environment.getExternalStoragePublicDirectory("")    |    +- dir1             -> Environment.getExternalStoragePublicDirectory("dir1")    |    |   ($appDataDir)    +- Andorid/data/com.srain.cube.sample        |        |   ($filesDir)        +- files        -> Context.getExternalFilesDir("")        |   |        |   +- file1    -> Context.getExternalFilesDir("file1")        |   +- Music    -> Context.getExternalFilesDir(Environment.Music);        |   +- Picture  -> ... Environment.Picture        |   +- ...        |        |   ($cacheDir)        +- cache        -> Context.getExternalCacheDir()        |        +- ???
各個路徑的特性

下面介紹這些路徑的特性以及使用中需要注意的細節:

相關代碼:

https://github.com/liaohuqiu/cube-sdk/blob/master/core/src/com/srain/cube/file/FileUtil.java

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.