1. 程式人生 > >android context獲取目錄詳解

android context獲取目錄詳解

獲取 sqlite系統資料庫路徑

方式1:

ApkInfo apkInfo = new ResourceUtil(context).getApkInfo();
APP_PATH = new StringBuilder("/data/data/").append(apkInfo.packageName)
.toString();
SHARED_PREFS = APP_PATH + "/shared_prefs";
DATABASES = APP_PATH + "/databases/"+"database.db";

方式2:context.getDatabasePath("database.db");

例子:

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;
}

結果:


Activity提供了getCacheDir()和getFilesDir()方法:

getCacheDir()方法用於獲取/data/data//cache目錄

getFilesDir()方法用於獲取/data/data//files目錄

將檔案寫入SD卡內:

獲取SDCard的狀態:

Environment.getExtemalStorageState()

EnvironmentMEDIA_MOUNTED手機裝有SDCard,並且可以進行讀寫

獲取SDCard的目錄:Environment.getExtemalStorageDirectory()

File saveFile=new File("/sdcard/zhzhg.txt");

或:File sdCardDir=new File("/sdcard");//獲取SD卡目錄

File saveFile-new File(sdCardDir,"zhzhg.txt");

FileOutputStream outStream = new FileOutputStream(saveFile);

outStream.write("檔案的讀寫".getBytes());

outStream.close();

目錄檔案替換:

/**
* 複製目錄

* @param srcDir
*            源目錄
* @param destDir
*            目標目錄
* @param successMsg
*            複製成功的提示語
* @param failedMsg
*            複製失敗的提示語
* @return 當複製成功時返回true, 否則返回false。
*/
private final boolean copyDir(String srcDir, String destDir,
String successMsg, String failedMsg) {
try {
FileUtils.copyDirectory(new File(srcDir), new File(destDir));
} catch (IOException e) {
e.printStackTrace();
// showToast(failedMsg);
return false;
}
// showToast(successMsg);
return true;
}


相關推薦

android context獲取目錄

獲取 sqlite系統資料庫路徑 方式1: ApkInfo apkInfo = new ResourceUtil(context).getApkInfo();APP_PATH = new StringBuilder("/data/data/").append(apkInfo

Android-系統/proc目錄

/proc是一個虛擬檔案系統,其下面的檔案不是真實存在的,不佔用實際儲存空間。 /proc/cmdline:顯示核心啟動的命令列。 /proc/cpuinfo:顯示系統cpu的資訊。 /proc/filesystems,顯示當前註冊了的檔案系統列表,nodev表示為虛擬檔案系統。

Eclipse ADT 建立Android專案----工程目錄

一、Eclipse建立Android工程 步驟:File→New→Android Application Project       1.工程名稱必須唯一,在Project name中填入HelloAndroid。       2.包的名稱空間,需要遵循Java包的命名方

Android Context類結構

大家好,  今天給大家介紹下我們在應用開發中最熟悉而陌生的朋友-----Context類 ,說它熟悉,是應為我們在開發中    時刻的在與它打交道,例如:Service、BroadcastReceiver、Activity等都會利用到Context的相關方法 ; 說它陌

Android sd卡目錄

附註: 二:7.0後文

Android系統/目錄

Android系統/proc目錄詳解: /proc/cpuinfo:顯示系統cpu的資訊。 /proc/meminfo:顯示物理及虛擬記憶體使用情況。 /proc/modules:載入的核心模組列表。 /proc/uptime:分別表示系統啟動時間和系統空閒時間。 /proc/ve

Android 6.0執行時獲取許可權

最近在工作過程中會遇到,明明已經在AndroidManifest.xml中配置了許可權,但是就是沒有作用,百度了之後才發現現在在應用系統大於等於6.0的手機上面,需要動態的獲取許可權。就是當你需要這個許可權的時候,需要手機給使用者一個提示選擇是否同意開啟這個許

Android-Studio之mipmap目錄和drawable目錄

簡單說一下: 使用上沒有任何區別,你把它當drawable用就好了。 但是用mipmap系統會在縮放上提供一定的效能優化。 官方介紹: Mipmapping for drawables Using a mipmap as the source for

Android自定義view

this boolean mar 處理 都是 並且 jdk text 命名 從繼承開始 懂點面向對象語言知識的都知道:封裝,繼承和多態,這是面向對象的三個基本特征,所以在自定義View的時候,最簡單的方法就是繼承現有的View 通過上面這段代碼,我定義了一個Ske

操作系統中的目錄

系列 mkdir 保存 linu ges 分隔 組成 查找 而在 首先要搞清楚一些基本的問題 1.文件就是一些數據的集合,計算機的信息都是通過 文件來保存 2.windows下的文件夾與linux下的目錄是同一個東西 3.目錄是一種文件,一種特殊的文件,有時候也被

Android MVC開發框架

div ada 2-2 展示 gpo lose 回調接口 cycle recycler 1、目錄根據需要自行添加   adapter    用於RecyclerView、ListView 等各種適配器  fragment    存放fragment   model    

Linux的/dev目錄

loop tid 終端 控制臺 包含 設備 pil 文件系統 get   在linux下,/dev目錄是很重要的,各種設備都在下面。下面簡單總結一下:   dev是設備(device)的英文縮寫。/dev這個目錄對所有的用戶都十分重要。因為在這個目錄中包含了所有Linux系

【轉】Android Camera 相機開發

exc troy start 當前 container rac google getconf 對比度 在Android 5.0(SDK 21)中,Google使用Camera2替代了Camera接口。Camera2在接口和架構上做了巨大的變動, 但是基於眾所周知的原因

Android Parcel對象

行數 ado state on() 直接 之一 一起 sharp mar 關於Parcel的使用 在分析Parcel之前,首先按照分析流程,介紹下關於Parcel的相關常規使用。 首先是關於Parcel的獲取: Parcel parcle = Parcel.Obtain()

linux目錄

style 啟動過程 usr 位置 cpu信息 pos 過程 scripts strong 網卡的配置文件目錄 /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0

Android EventBus3.x 使用(一)

led AC target 分解 感覺 div activit .org android事 ?(^∇^*) 五一假期在家無事,新項目中用的是RxJava2+EventBus感覺還不錯,趁這閑暇總結下EventBus 一、概要簡述   EventBus

3、【Linux系統編程】系統目錄

升級 user ssa pci edi 靜態 描述 com 沒有 Linux系統目錄詳解 一、Linux系統目錄結構 1、根目錄/   這就是根目錄。對你的電腦來說,有且只有一個根目錄。所有的東西,我是說所有的東西都是從這裏開始。舉個例子:當你在終端裏輸入“/home”,

CentOS7.5 系統目錄

CentOS7系統目錄 檔案系統的型別   LINUX有四種基本檔案系統型別:普通檔案、目錄檔案、連線檔案和特殊檔案,可用file命令來識別。  普通檔案:如文字檔案、C語言元程式碼、SHELL指令碼、二進位制的可執行檔案等,可用cat、less、more、

Android FileProvider 屬性配置及FileProvider多節點問題

眾所周知在android7.0,修改了對私有儲存的限制,導致在獲取資源的時候,不能通過Uri.fromFile來獲取uri了我們需要適配7.0+的機型需要這樣寫: 1:程式碼適配 if (Build.VERSION.SDK_INT > 23) {//

Linux /proc目錄

Linux /proc目錄詳解 Linux系統上的/proc目錄是一種檔案系統,即proc檔案系統。與其它常見的檔案系統不同的是,/proc是一種偽檔案系統(也即虛擬檔案系統),儲存的是當前核心執行狀態的一系列特殊檔案,使用者可