Android應用程式目錄定義及使用方法
一、方法介紹:
每個Android應用程式都可以通過Context來獲取與應用程式相關的目錄,這些目錄的功能各異,每一個目錄都有自己的特點,有時候可能會搞混淆,本文結合android原始碼註釋和實際操作,詳細介紹一下每個方法:
方法:getFilesDir
釋義:返回通過Context.openFileOutput()建立和儲存的檔案系統的絕對路徑,應用程式檔案,這些檔案會在程式被解除安裝的時候全部刪掉。
方法:getCacheDir
釋義:返回應用程式指定的快取目錄,這些檔案在裝置記憶體不足時會優先被刪除掉,所以存放在這裡的檔案是沒有任何保障的,可能會隨時丟掉。
方法:getDir
釋義:這是一個可以存放你自己應用程式自定義的檔案,你可以通過該方法返回的File例項來建立或者訪問這個目錄,注意該目錄下的檔案只有你自己的程式可以訪問。
方法:getExternalCacheDir
釋義:使用這個方法需要寫外部儲存的許可權“<uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE” />”,呼叫該方法會返回應用程式的外部檔案系統(Environment.getExternalStorageDirectory())目錄的絕對路徑,它是用來存放應用的快取檔案,它和getCacheDir目錄一樣,目錄下的檔案都會在程式被解除安裝的時候被清除掉。
方法:getExternalFilesDir
釋義:使用這個方法需要寫外部儲存的許可權“<uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE” />”,這個目錄是與應用程式相關的外部檔案系統,它和getExternalCacheDir不一樣的是隻要應用程式存在它就會一直存在,這些檔案只屬於你的應用,不能被其它人訪問。同樣,這個目錄下的檔案在程式被解除安裝時也會被一同刪除。
方法:getExternalFilesDir
釋義:和上面的方法一樣,只是返回的是其目錄下某一型別的檔案,這些型別可以是:
Environment#DIRECTORY_MUSIC 音樂
Environment#DIRECTORY_PODCASTS 音訊
Environment#DIRECTORY_RINGTONES 鈴聲
Environment#DIRECTORY_ALARMS 鬧鈴
Environment#DIRECTORY_NOTIFICATIONS 通知鈴聲
Environment#DIRECTORY_PICTURES 圖片
Environment#DIRECTORY_MOVIES 視訊
方法:getDatabasePath
釋義:儲存通過Context.openOrCreateDatabase 建立的資料庫檔案
方法:getPackageCodePath
釋義:返回android 安裝包的完整路徑,這個包是一個zip的壓縮檔案,它包括應用程式的程式碼和assets檔案。
方法:getPackageResourcePath
釋義:返回android 安裝包的完整路徑,這個包是一個ZIP的要鎖檔案,它包括應用程式的私有資源。
方法:getObbDir
釋義:返回應用程式的OBB檔案目錄(如果有的話),注意如果該應用程式沒有任何OBB檔案,這個目錄是不存在的。
二、測試程式:
測試程式碼如下:
private StringBuilder getFilePath( ){ StringBuilder filePathBuilder = new StringBuilder( ); // 返回通過Context.openFileOutput()建立和儲存的檔案系統的絕對路徑,應用程式檔案,這些檔案會在程式被解除安裝的時候全部刪掉。 filePathBuilder.append( "getFilesDir == " ).append( getFilesDir( ) ).append( "\n" ); // 返回應用程式指定的快取目錄,這些檔案在裝置記憶體不足時會優先被刪除掉,所以存放在這裡的檔案是沒有任何保障的,可能會隨時丟掉。 filePathBuilder.append( "getCacheDir == " ).append( getCacheDir( ) ).append( "\n" ); // 這是一個可以存放你自己應用程式自定義的檔案,你可以通過該方法返回的File例項來建立或者訪問這個目錄,注意該目錄下的檔案只有你自己的程式可以訪問。 filePathBuilder.append( "getDir == " ).append( getDir("test.txt", Context.MODE_WORLD_WRITEABLE) ).append( "\n" ); /* 需要寫檔案許可權 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> */ // 呼叫該方法會返回應用程式的外部檔案系統(Environment.getExternalStorageDirectory())目錄的絕對路徑,它是用來存放應用的快取檔案,它和getCacheDir目錄一樣,目錄下的檔案都會在程式被解除安裝的時候被清除掉。 filePathBuilder.append( "getExternalCacheDir == " ).append( getExternalCacheDir( ) ).append( "\n" ); // 這個目錄是與應用程式相關的外部檔案系統,它和getExternalCacheDir不一樣的是隻要應用程式存在它就會一直存在,這些檔案只屬於你的應用,不能被其它人訪問。同樣,這個目錄下的檔案在程式被解除安裝時也會被一同刪除。 filePathBuilder.append( "getExternalFilesDir == " ).append( getExternalFilesDir( "/" ) ).append( "\n" ); /** * 和上面的方法一樣,只是返回的是其目錄下某一型別的檔案,這些型別可以是: * Environment#DIRECTORY_MUSIC 音樂 * Environment#DIRECTORY_PODCASTS 音訊 * Environment#DIRECTORY_RINGTONES 鈴聲 * Environment#DIRECTORY_ALARMS 鬧鈴 * Environment#DIRECTORY_NOTIFICATIONS 通知鈴聲 * Environment#DIRECTORY_PICTURES 圖片 * Environment#DIRECTORY_MOVIES 視訊 * * */ filePathBuilder.append( "getExternalFilesDir == " ).append( getExternalFilesDir( Environment.DIRECTORY_PICTURES ) ).append( "\n" ); // 儲存通過Context.openOrCreateDatabase 建立的資料庫檔案 filePathBuilder.append( "getDatabasePath == " ).append( getDatabasePath( DATA_BASE_NAME ) ).append( "\n" ); // 返回android 安裝包的完整路徑,這個包是一個zip的壓縮檔案,它包括應用程式的程式碼和assets檔案 filePathBuilder.append( "getPackageCodePath == " ).append( getPackageCodePath( ) ).append( "\n" ); // 返回android 安裝包的完整路徑,這個包是一個ZIP的要鎖檔案,它包括應用程式的私有資源。 filePathBuilder.append( "getPackageResourcePath == " ).append( getPackageResourcePath( ) ).append( "\n" ); // 返回應用程式的OBB檔案目錄(如果有的話),注意如果該應用程式沒有任何OBB檔案,這個目錄是不存在的。 filePathBuilder.append( "getObbDir == " ).append( getObbDir( ) ).append( "\n" ); return filePathBuilder; }
測試效果如下:
相關文章
- 瘋狂android講義目錄Android
- IIS 網站應用程式與虛擬目錄的區別及高階應用說明網站
- 從執行的node.js應用程式確定專案根目錄Node.js
- Android 程式目錄介紹Android
- 【轉】設定Qt應用程式圖示及應用程式名QT
- 自定義目錄
- VB中得到當前目錄API定義 (轉)API
- Linux目錄涵義及常用命令Linux
- Jboss下將某個應用目錄配置為根目錄
- unity3d專案檔案目錄釋出後,對應的ios/android應用目錄Unity3DiOSAndroid
- 開發者定義的應用交付
- Mysql資料庫自定義函式的定義、使用方法及操作注意事項MySql資料庫函式
- Word 設定目錄
- oracle 10G設定歸檔目錄及命令Oracle 10g
- Android應用及應用管理簡介Android
- 4.1 定義和應用樣式
- JBoss應用根路徑定義
- 運籌優化(六)--目標規劃定義及解法優化
- win7目錄開啟變應用程式怎麼修復??Win7
- Android Protobuf應用及原理Android
- 在word中怎麼設定目錄 word設定目錄的方法
- 【Azure 應用服務】App Service For Container 配置Nginx,設定/home/site/wwwroot/目錄為啟動目錄,並配置反向代理APPAINginx
- VUE - 配置根目錄(用@代表src目錄)Vue
- oracle GlodenGate 建立目錄下每個目錄的含義Oracle
- spring boot應用之spring mvc應用書目錄Spring BootMVC
- 刪除目錄及目錄下所有檔案與子目錄 (轉)
- Android 應用內多程式的使用及注意事項Android
- linux常用指令含義及使用方法Linux
- Angular過濾器 自定義及使用方法Angular過濾器
- ArkTS開發HarmonyOS應用目錄介紹
- ueditor編輯器圖片自定義存放目錄及路徑修改
- Word中怎麼新增目錄連結?word目錄連結到相應頁碼設定教程
- Laravel 中自定義日誌目錄Laravel
- HDFS應用場景、原理、基本架構及使用方法概述架構
- Android 目錄結構分析Android
- Android知識點目錄Android
- Android 知識梳理目錄Android
- KEPServer 安裝目錄下 opc client 的 item 名字定義格式Serverclient