Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android應用程序相關的文件目錄詳解

Android應用程序相關的文件目錄詳解

編輯:關於Android編程

一、方法介紹:

每個Android應用程序都可以通過Context來獲取與應用程序相關的目錄,這些目錄的功能各異,每一個目錄都有自己的特點,有時候可能會搞混淆,本文結合android源碼注釋和實際操作,詳細介紹一下每個方法:

方法:getFilesDir

釋義:返回通過Context.openFileOutput()創建和存儲的文件系統的絕對路徑,應用程序文件,這些文件會在程序被卸載的時候全部刪掉。


方法:getCacheDir

釋義:返回應用程序指定的緩存目錄,這些文件在設備內存不足時會優先被刪除掉,所以存放在這裡的文件是沒有任何保障的,可能會隨時丟掉。


方法:getDir

釋義:這是一個可以存放你自己應用程序自定義的文件,你可以通過該方法返回的File實例來創建或者訪問這個目錄,注意該目錄下的文件只有你自己的程序可以訪問。


方法:getExternalCacheDir

釋義:使用這個方法需要寫外部存儲的權限”,調用該方法會返回應用程序的外部文件系統(Environment.getExternalStorageDirectory())目錄的絕對路徑,它是用來存放應用的緩存文件,它和getCacheDir目錄一樣,目錄下的文件都會在程序被卸載的時候被清除掉。


方法:getExternalFilesDir

釋義:使用這個方法需要寫外部存儲的權限”,這個目錄是與應用程序相關的外部文件系統,它和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" );
		
		/* 需要寫文件權限  */
		// 調用該方法會返回應用程序的外部文件系統(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;
	}

測試效果如下:



  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved