1. 程式人生 > >資料儲存--------詳解持久化技術

資料儲存--------詳解持久化技術

檔案儲存

       方法儲存是Android最基本的一種資料儲存方式下面就給大家承上程式碼:

package com.example.liangshaoteng.fileoutputstream;

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class MainActivity extends AppCompatActivity {
    private BufferedWriter bufferedWriter;
    private EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = (EditText) findViewById(R.id.et_text);

    }

    private void load() {
        try {
            //從程式碼的openFileInput我們就能看出是:開啟檔案從裡面輸入到什麼地方
            FileInputStream data = openFileInput("dataSave");
            StringBuffer stringBuffer = new StringBuffer();
            //緩衝區讀取
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(data));
            String line = "";
            //一行一行的讀取
            while ((line = bufferedReader.readLine()) != null) {
                stringBuffer.append(line);
            }
            //通過StringBuffer追加到一起Toast出來
            Toast.makeText(getApplicationContext(), stringBuffer.toString(), Toast.LENGTH_LONG).show();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private void save(String inputText) {
        if (inputText.isEmpty()) return;
        try {
            //從程式碼的openFileOutput我們就能看出是:開啟檔案從外面放東西
            //第一個引數是:檔案的名稱 第二個引數是:儲存的模式
            //儲存模式 :
            //Context.MODE_PRIVATE:別的應用不能訪問得到SharedPreferences物件
            //Context.MODE_WORLD_READABLE:別的應用可以訪問,並且是可以讀取SharedPreferences中的資料,但不能寫入資料
            //Context.MODE_WORLD_WRITEABLE:別的應用可以訪問,可以在SharedPreferences中寫入修改資料

            FileOutputStream dataSave = openFileOutput("dataSave", Context.MODE_PRIVATE);
            //在放東西的期間是需要一個緩衝BufferedWriter
            bufferedWriter = new BufferedWriter(new OutputStreamWriter(dataSave));
            //然後通過緩衝寫入資料
            bufferedWriter.write(inputText);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            Toast.makeText(getApplicationContext(), "儲存成功!", Toast.LENGTH_LONG).show();
            if (bufferedWriter != null) {
                try {
                    //不要忘記用完要關閉
                    bufferedWriter.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public void commit(View view) {
        String trim = editText.getText().toString().trim();
        if (trim.isEmpty()) return;
        save(trim);
    }

    public void input(View view) {
        load();
    }
}


下面就是ShardPreference這一個非常簡單所以我就不再詳細的講解了後續呢我將給出工具類大家可以下載直接拿來用

 大家先看一下工具類ShardPreference

package com.waywings.fm.utils;

import android.content.Context;
import android.content.SharedPreferences;

public class ShareUtil {
    public static String CONFIG = "config";
    public static String FCONFIG = "fmconfig";
    public static String INTFIG = "intconfig";
    private static SharedPreferences sharedPreferences;

    public static void saveFloatData(Context context, String key, Float value) {
        if (sharedPreferences == null) {
            sharedPreferences = context.getSharedPreferences(FCONFIG, Context.MODE_PRIVATE);
        }
        sharedPreferences.edit().putFloat(key, value).commit();
    }

    public static Float getFloatData(Context context, String key, Float defValue) {
        if (sharedPreferences == null) {
            sharedPreferences = context.getSharedPreferences(FCONFIG, Context.MODE_PRIVATE);
        }
        return sharedPreferences.getFloat(key, defValue);
    }

    public static void saveStringData(Context context, String key, String value) {
        if (sharedPreferences == null) {
            sharedPreferences = context.getSharedPreferences(CONFIG, Context.MODE_PRIVATE);
        }
        sharedPreferences.edit().putString(key, value).commit();
    }

    public static String getStringData(Context context, String key, String defValue) {
        if (sharedPreferences == null) {
            sharedPreferences = context.getSharedPreferences(CONFIG, Context.MODE_PRIVATE);
        }
        return sharedPreferences.getString(key, defValue);
    }

    public static int getIntData(Context context, String key, int defValue) {

        if (sharedPreferences == null) {
            sharedPreferences = context.getSharedPreferences(INTFIG, Context.MODE_PRIVATE);
        }
        return sharedPreferences.getInt(key, defValue);
    }

    public static void savaIntData(Context context, String key, int value) {

        if (sharedPreferences == null) {
            sharedPreferences = context.getSharedPreferences(INTFIG, Context.MODE_PRIVATE);

        }
        sharedPreferences.edit().putInt(key, value).commit();
    }
}

不足之處還望大家指出 !

Sqlite儲存 : 請大家移步到我的另一篇文章 :點選開啟連結

後續給大家提供的工具類的下載 :   工具類下載

相關推薦

資料儲存--------持久化技術

檔案儲存        方法儲存是Android最基本的一種資料儲存方式下面就給大家承上程式碼: package com.example.liangshaoteng.fileoutputstream; import android.content.Context; im

第一行程式碼——第六章:資料儲存全方案——持久化技術

目錄: 6.1 持久化技術簡介 6.2 檔案儲存 6.2.1 將資料儲存到檔案中 6.2.2 從檔案中讀出資料 6.3 SharedPreferences 儲存 6.3.1 將資料儲存到SharedPreferences中 6.3.2 從SharedPreferenc

第二行程式碼學習筆記——第六章:資料儲存全方案——持久化技術

本章要點 任何一個應用程式,總是不停的和資料打交道。 瞬時資料:指儲存在記憶體當中,有可能因為程式關閉或其他原因導致記憶體被回收而丟失的資料。 資料持久化技術,為了解決關鍵性資料的丟失。 6.1 持久化技術簡介 資料持久化技術:指那些記憶體中的瞬時

資料儲存全方案--持久化技術

持久化技術提供了一種機制可以讓資料在瞬時狀態和持久化狀態之間進行轉換。 Android中的資料持久化技術主要有: 1. 檔案儲存 2. SharedPreference 儲存 3. 資料庫儲存 1 檔案儲存 不會對儲存內容進行任何格式化處理

android 摘要----資料儲存全方案,持久化技術

資料持久化:         只將那些記憶體中的瞬時資料儲存到儲存裝置中,保證即使在手機或電腦關機的情況下,這些資料也不會丟失。 1,檔案儲存:             是android中最基本的一種資料儲存方式,不對儲存內容進行任何格式化處理,所有詩句原封不動的儲存到檔案

java中資料在記憶體中的儲存

  1. 有這樣一種說法,如今爭鋒於IT戰場的兩大勢力,MS一族偏重於底層實現,Java一族偏重於系統架構。說法根據無從考證,但從兩大勢力各自的社群力量和圖書市場已有佳作不難看出,此說法不虛,但掌握Java的底層實現對Java程式設計師來說是至關重要的,本文介紹了Java中的資料在記憶體中的儲存。   

磁碟陣列資料恢復_raid5硬碟離線資料恢復步驟_HP-lefthand儲存

一、HP-lefthand儲存簡介HP-lefhand儲存具有一定的市場佔有量,基於其軟體定義儲存的弊端,這款儲存裝置具有非常高的資料恢復需求。lefhand儲存支援搭建RAID5、RAID6、RAID10磁碟陣列,同時還支援卷快照,捲動態擴容等。本文主要為大家介紹了lefh

Redis持久化儲存(一)

開發十年,就只剩下這套架構體系了! >>>   

EJB2.0教程 EJB技術及實現原理

tee nsa 普通 事情 println 配置 ransac 教程 聲明 EJB是什麽呢?EJB是一個J2EE體系中的組件.再簡單的說它是一個能夠遠程調用的javaBean.它同普通的javaBean有兩點不同.第一點,就是遠程調用.第二點,就是事務的功能,我們在EJB中

爆款AR遊戲如何打造?網易楊鵬以《悠夢》為例前沿技術

系統 安全 有著 互聯 其中 應用 中小型 信息 詳解 7月31日,2018雲創大會遊戲論壇在杭州國際博覽中心103B圓滿舉行。本場遊戲論壇聚焦探討了可能對遊戲行業發展有重大推動的新技術、新實踐,如AR、區塊鏈、安全、大數據等。網易AR遊戲生態合作負責人楊鵬表示,傳統遊戲模

python for 資料型別【列表】

 range # 範圍  print(range(5))  print(list(range(10,0,-1))) [起始位置:終止位置:步長] range(起始位置,終止位置,步長) #顧頭不顧尾  1. 使用for迴圈和range列印50 - 0

hashmap資料結構(五)之HashMap、HashTable、ConcurrentHashMap 的區別

【hashmap 與 hashtable】   hashmap資料結構詳解(一)之基礎知識奠基 hashmap資料結構詳解(二)之走進JDK原始碼 hashmap資料結構詳解(三)之hashcode例項及大小是2的冪次方解釋 hashmap資料結構詳解(四)之has

一起學Python——資料型別

和學習其他程式語言一樣,首先要了解一門語言的資料型別。 Python的資料型別有整型、浮點型、字串、布林型、日期時間型別、list列表、set集合、tuple元組、dict詞典等。 1、整型 就是數學中的整數,包括負整數。 定義整型的方法: a = 100 b = -100 print(a) print

C/C++堆、棧及靜態資料(轉載只是為了查閱方便,若侵權立刪)

C/C++堆、棧及靜態資料區詳解   本文介紹C/C++中堆,棧及靜態資料區。     五大記憶體分割槽   在C++中,記憶體分成5個區,他們分別是堆、棧、自由儲存區、全域性/靜態儲存區和常量儲存區。下面分別來介紹:   棧,就是那些由編譯器在需要的時候分配,在不需要

JVM之執行時資料區域

1、程式計數器                 程式計數器是一塊較小的記憶體空間,它可以看作是當前執行緒所執行的位元組碼的行號指示器。虛擬機器工作時就是通過改變改變計數器的值來選取下一條需要執行的位元組碼指

TCP傳送資料流程

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Oracle 資料庫 全部資料型別

資料型別 描述 VARCHAR2(size) 可變長度的字串,其最大長度為size個位元組;size的最大值是4000,而最小值是1;你必須指定一個VARCHAR2的size;  

Hadoop Streaming 做大資料處理

-------------------------------------------------------------------------- 以下內容摘自寒小陽老師大資料課程內容 -----------------------------

JVM 執行時資料

       1、PC暫存器(執行緒獨有):全稱是程式計數暫存器,它記載著每一個執行緒當前執行的JAVA方法的地址,如果是當前執行的是native方法,則程式計數器會是一個空地址。它的作用就是用來支援多執行緒,執行緒的阻塞、恢復、掛起等一系列操作。這

Redis內部資料結構——intset

本文是《Redis內部資料結構詳解》系列的第七篇。在本文中,我們圍繞一個Redis的內部資料結構——intset展開討論。 Redis裡面使用intset是為了實現集合(set)這種對外的資料結構。set結構類似於數學上的集合的概念,它包含的元素無序,且不能重複。Redis裡的set結構還實現了