Android 文件存放路徑

對於應用攜帶的靜態數據,能夠放置在應用的assets目錄或者res,raw目錄下。
對於assets目錄下的靜態數據,存在當文件最大支持1MB的侷限,讀取方式以下緩存

1 InputStream is = getAssets().open("xxx.xx");

對於res,raw目錄下的文件,能夠經過以下方式讀取: 網絡

1 InputStream is = resources.openRawResource.(R.raw.xxx);

另外,Android還對建立緩存提供了支持,經過getCacheDir()能夠獲取應用的緩存路徑,在系統可用空間不足時,Android會清空緩存,但對於開發者而言,不該維護過多的緩存。用戶能夠經過系統的設置來手動清空緩存,有人也用這個緩存來作圖片的緩存,可是吧,雖然少了用了流量,可是對程序的效率來講就只是縮短了一個網絡下載時間而已。開發者能夠根據本身應用的特性來選擇是否使用這個緩存空間。 spa

Android支持在SD卡上的應用私有目錄,在Froyo版本後,經過getExternalFilesDir()能夠得到具體路徑。該路徑依賴與應用的包名,若是你包爲hello.file那麼SD開上的應用私有目錄爲\mnt\sdcard\Android\data\hello.file\files\.若是但願存儲在SD卡上的公共目錄下,能夠經過getExternalStoragePublicDirectory()公共目錄的具體路徑視須要存儲的文件類型而定。 xml

SD上的應用須要的緩存較大,也能夠在SD卡上創建緩存目錄,在Froyo版本後,經過getExternalCacheDir()能夠獲取應用在SD卡上的緩存路徑。在使用SD卡目錄時,需注意SD卡是否掛載,可經過Environment.getExternalStorageState()方法進行判斷,若是返回值爲Envirnment.MEDIA_MOUNTED表示SD卡處於掛載狀態,能夠放心使用。 圖片

SQLite的中的事務處理。當須要一次性修改多個數據時,建議經過SQLite的事務處理進行批量處理,這有利於提升執行的效率。事務處理相關的方法以下: 事務

1 public void beginTransaction();
2 public void beginTransactionWithListener(SQLiteTransactionListener transactionListener);
3 public void endTransaction();
4 public void inTransaction();
5 public void setTransactionSuccessful();

 此外還有使用SharedPreferences來存儲的xml文件,究其本質其實仍是<key,value>值對。Android中XML文件更多的用來維護應用或者系統的配置文件,咱們在開發中通常用SharedPreferences也是保存一些應用的配置信息,記錄用戶的某些操做,例如:用戶是否是第一次進入應用,用戶是否選擇了保存用戶名和密碼和用戶的某些偏好設置等等,Android根據配置信息是否對其餘應用開放,SharedPreferences提供了兩種權限,MODE_PRIVATE和MODE_WORLD_READABLE該數據存放在\data\data\包.名\shared_prefs文件夾下,文件擴展名爲.xml。數據以這種形式存儲: 開發

<map><boolean name="firstFlag" value="true" /></map>
獲取SharedPreferences的方法:(該變量通常做爲全局變量,放到Activity的OnCreate方法中初始化,我遇到有人在方法中獲取不到這個變量的錯誤,該成全局的就獲取到了。) get

1 SharedPreferences sp = getSharedPreferences("存儲xml文件的名字",MODE_PRIVATE);
得到數據的方法: 
1 String msg = sp.getString("存儲的key","若是沒保存則會得到的數據");
msg就是你保存的數據,若是沒有保存,那麼得到就是你後面設置的默認數據 
對其編輯的方法: 
1 Editor editor = sp.edit();
2 editor.putString(key, value);
3 editor.commit();//必定不要忘記提交,不然就保存不到文件中。
若是但願配置信息對其餘應用開放, 在設置權限時,可以使用  MODE_WORLD_READABLE, 其餘應用要得到該配置信息時,必須先獲取相應的上下文: 
1 context =createPackageContext("全包名",Context_CONTEXT_IGNORE_SECURITY);
2 SharedPreferences sp = context.getSharedPreferences("存儲xml文件的名字",MODE_PRIVATE);
在實際開發中,必定要對得到context進行是否爲null的判斷,有些時候咱們打不開,或因權限不足,或由於應用已經被用戶刪除。  
須要說明的是,在PreferenceActivity中內置了對SharedPreferences的支持。若是但願進一步瞭解的用戶能夠查看一下相似ListPreference的用法。 
其次Android還提供了內部存儲方式, 開發者能夠將數據存儲在應用的私有空間中,避免其餘程序訪問。其權限在Context下,有: MODE_PRIVATE,MODE_APPEND,MODE_WORLD_READABLE,MODE_WORLD_WRITEABLE 等。內部  存儲所在的目錄爲:/date/date/包.名/files  
寫入數據可讀數據 也很簡單: 
1 FileOutputStream fos = context.openFileOutput(file,Context_MODE_WORLD_WRITEABLE);
2 fos.write(bytes);
3 fos.close();
4  
5 FileInputStream fis = context.openFileInput("fileName");
接下來跟日常文件同樣讀入 就ok了。
相關文章
相關標籤/搜索