Android 數據存儲

Android 數據存儲

Android中數據存儲的方式有一下幾種:

 一.SharedPreferences :

            是一種輕量級的數據存儲方式,主要用於保存應用的一些常用配置,以xml 文件的方式存儲數據,

            以鍵值對的方式存取數據。

            SharedPreferences 的類型(MODE):

            MODE_PRIVATE :私有類型,只允許本應用使用,這個爲默認類型

            MODE_APPEND :如果SharedPreferences 文件已經存在,則數據寫入這個文件的末尾

            MODE_WORLD_READABLE : 允許其他app讀取數據 ,這個值在API 17 被廢除了(可能爲了保護數據安全)

            MODE_WORLD_WRITEABLE : 允許其他app寫入數據 ,這個也是 在 API 17 廢除

            獲取SharedPreferences 的兩種方式:

            getSharedPreferences(String name,int MODE);獲得的對象可以被同一應用程序下的其他組件共享

            getPreferences(); 獲得的SharedPreferences對象只能在該Activity中使用.

            保存數據:

            SharedPreferences sp = Context.getSharedPreferences(String name,int MODE);

            SharedPreferences.Editor editor = sp.edit();

            editor.put(String key,String value);

            editor.commit(); 提交數據

            讀取數據:

            SharedPreferences sp = Context.getSharedPreferences(String name,int MODE);

            String value = sp.get(String key);

                         

二.基於Java IO 方式的 file:

IO操作數據有兩種不同的類型:私有的file,存放在data/data/目錄下, 另一個是對SDcard操作

            1.私有file:

                保存數據:MODE 和SharedPreferences 一樣

                FileOutputStream fo = Context.openFileOutput(String name,int MODE)

                讀取數據:

                FileInputStream fi = Context.openFileInput(String name)


            2.對SDCard 的數據進行操作:這裏涉及到一個 Environment 類,它是用來管理Android 內部存儲和SDcard的

                    其中包含了sdcard的一些字段 表示sd卡當前的狀態:

            1. MEDIA_BAD_REMOVAL 在沒有掛載前存儲媒體已被移除

            2. MEDIA_CHECKING                            正在檢查存儲媒體

            3. MEDIA_MOUNTED                        存儲媒體已掛載,並且掛載點可讀寫

            4. MEDIA_MOUNTED_READ_ONLY    存儲媒體已掛載,但只可讀

            5. MEDIA_NOFS                                存儲媒體是空白或不支持的文件系統

            6. MEDIA_REMOVED                        存儲媒體被移除

            7. MEDIA_SHARED                            存儲媒體正在通過USB共享

            8. MEDIA_UNMOUNTABLE               存儲媒體無法掛載

            9. MEDIA_UNMOUNTED                   存儲媒體沒有掛載

                   Environment 中的一些靜態方法:

                    獲取Android 根目錄 File root = Environment.getRootDirectory();

                    獲取data目錄         File data = Environment.getDataDirectory();

                    獲取 Android 下載/緩存內容目錄 File file = Environment.getDownloadCacheDirectory();

                    獲取SDCard狀態 :Environment.getExternalStorageState();

                    獲取SDCard根目錄:File root = Environment.getExternalStorageDirectory();


                    對SDCard進行數據存取的話,首先獲取sdcard 的狀態,判斷sdcard是掛載,如果掛載了sdcard

                    則獲取Sdcard 的根目錄,然後和自己創建的文件的目錄拼接成一個文件的存放目錄,最後用IO即可

                    (這裏有個小細節:File類型的量可以和字符串直接用“+”拼接,然後變成字符串)

                    File root = Environment.getExternalStorageDirectory();//獲取sdcard根目錄

                    File file = new File(root+File.separator+"MyFile.txt");  separator 爲路徑分隔符



三.SQLite 數據庫:

        Android 內置的SQLite是一種輕量級的數據庫,SQL數據庫的功能它基本都有

        Android操作SQLite涉及到兩個類 :

                    SQLiteDataBase :SQLite數據庫類,這個類沒有構造函數,其對象是通過SQLiteOpenHelper 類獲取的

                                    這類具有數據庫的增刪查改等方法,還可以調用execSQL() 方法來執行標準的SQL語句

                    SQLiteOpenHelper :數據庫輔助類,這個類是用來獲取已有的數據庫 或者 創建新的數據庫以及數據庫

                                版本號。SQLiteOpenHelper中有兩個抽象方法,用於創建數據庫中的表格,和升級數據庫用                                        的,這兩個方法需要用戶自己去實現


                創建一個類MyDataBase繼承 SQLiteOpenHelper 

                            public MyDataBase(Context context){  構造函數

                                       super(Context context,String dataBaseName,null,int DataBaseVersion);父類構造函數

                                }

                            實現其中的抽象方法:

                            onCreate(SQLiteDataBase db){

                                        db.execSQL(String s);    在次執行SQL語句創建表格

                                }

                            onUpgrade(SQLiteDataBase db,int oldVersion,int newVersion){}   當數據庫版本號改變是調用

                                        

                                

    

四.ContentProvider 數據共享:

五.基於 Java Socket/http 的網絡存儲 :

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章