Android的3種資料儲存技術(一)File儲存

Mr.War發表於2020-11-12

File儲存

引文: 資料儲存是實現資料持久化的方法之一

原理: 把資料儲存在手機記憶體裡,以便軟體對重要資料進行保留。

假使某個軟體關閉後,就什麼記錄也沒有了,那也必然會引起使用者的極度不滿把!

最常見的資料儲存,像我們的QQ的記住密碼和一些本地的聊天記錄,就是儲存在手機記憶體裡的

接下來我們就開始學習超級簡單的File儲存把

資料儲存方法:

一、File儲存(本章將要講解的內容)

二、SharedPreferences儲存

三、SQLite儲存

不要覺得有三種檔案儲存便覺得困難,那麼我告訴你,File儲存和SharedPreferences儲存極度類似,所以我們只要熟練知曉File儲存的原理 就可以很快的學會另一個,這便是觸類旁通。另外SQLite是資料庫儲存,學完他你又會對SQL資料庫領域有所涉足,不僅僅止步於JAVA的程式碼,怎麼樣?聽完後你的興趣是不是濃厚起來了?

那麼接下來我們先認識一下File儲存中的 資料的實現方法
寫,當然是把資料寫出去,那自然應該是“Output”

FileOutputStream fos=openFileOutput("data",Context.MODE_PRIVATE);

openFileOutput引數說明:
第一個引數name:檔名(不含路徑)
第二個引數mode:儲存模式(這裡有兩種模式供選擇,MODE_PRIVATE(同名檔案覆蓋<如果有同名檔案,直接覆蓋原檔案中的內容>) MODE_APPEND(同名檔案追加<如果有同名檔案,向原檔案裡追加內容>))

openFileOutput要用一個檔案位元組輸出流FileOutputStream來接收

接下來我們要新建一個字元緩衝輸出流,通過它來將一串文字寫出到檔案裡

BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(out));
writer.write("6666666666");

至此,我們新建了一個檔名為"data"的檔案來儲存資料,並對其寫入了"6666666666"這個資料

接下來我們來看一下完整的原始碼

public void write(String inputText){
		FileOutputStream fos;
        BufferedWriter writer=null;//這裡要初始化一個null
        try{
            fos=openFileOutput("data", Context.MODE_PRIVATE);
            writer=new BufferedWriter(new OutputStreamWriter(fos));
            writer.write(inputText);//這裡寫入引數
        }catch(IOException e){
            e.printStackTrace();
        }finally {
            try{
                if(writer != null){
                    writer.close();//關閉字元緩衝輸出流
                }
            }catch (IOException e){
                e.printStackTrace();
            }
        }
    }

上面短短几行程式碼,我們便將資料寫入到了手機記憶體中,此時你們一定會好奇,資料存在哪裡了呢?
路徑:檔案預設儲存到data/data/< packname >/files/目錄下

在這裡插入圖片描述
如果你是安卓模擬器,可以開啟Android Studio裡面的Device File Explorer 找到相關目錄

在這裡插入圖片描述
如果你是用自己的手機進行除錯,那麼直接用手機自帶的檔案管理找到相關目錄即可

最後開啟data檔案 就能看到我們寫入的字串資料了

寫完了資料,接下來就是讀取了,程式碼和上面很相似

寫入的時候用Output 那我們讀取 自然應該是Input

FileInputStream fis=OpenFileInput("data");//這裡只有一個引數,便是讀取的檔名
BufferedReader=new BufferedReader(new InputStreamReader(fis));//字元緩衝輸入流

Output變成了Input,Writer變成了Reader,完全相反,很容易記憶

public String read(){
        FileInputStream fis;
        BufferedReader reader=null;//這裡要初始化null
        StringBuilder builder=new StringBuilder();
        try{
            fis=openFileInput("data");
            reader=new BufferedReader(new InputStreamReader(fis));
            String lines="";
            while((lines=reader.readLine())!=null){
                builder.append(lines);
            }
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            try {
                reader.close();
            }catch (IOException e){
                e.printStackTrace();
            }
        }
        return builder.toString();
    }

值得注意的是使用readline進行讀取BufferedReader的內容

接下來我們實戰一下 寫一個記住賬號的案例 新建一個AndroidStudio專案

佈局如下:
在這裡插入圖片描述
在這裡插入圖片描述

然後我們進行JAVA後端程式碼編寫

public class MainActivity extends AppCompatActivity {
EditText account;
Button write,read;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        account=findViewById(R.id.account);
        write=findViewById(R.id.write);
        read=findViewById(R.id.read);
        write.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                write(account.getText().toString());
            }
        });
        read.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                account.setText(read());
            }
        });
    }
    public void write(String inputText){
        FileOutputStream fos;
        BufferedWriter writer=null;
        try{
            fos=openFileOutput("data", Context.MODE_PRIVATE);
            writer=new BufferedWriter(new OutputStreamWriter(fos));
            writer.write(inputText);
        }catch(IOException e){
            e.printStackTrace();
        }finally {
            try{
                if(writer != null){
                    writer.close();
                }
            }catch (IOException e){
                e.printStackTrace();
            }
        }
    }
    public String read(){
        FileInputStream fis;
        BufferedReader reader=null;//這裡要初始化null
        StringBuilder builder=new StringBuilder();
        try{
            fis=openFileInput("data");
            reader=new BufferedReader(new InputStreamReader(fis));
            String lines="";
            while((lines=reader.readLine())!=null){
                builder.append(lines);
            }
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            try {
                reader.close();
            }catch (IOException e){
                e.printStackTrace();
            }
        }
        return builder.toString();
    }
}

到此為止,我們的讀寫功能就全部實現了,來執行一下看看效果
在這裡插入圖片描述
我們輸入123456,並點選寫入資料,隨後刪掉EditText的內容後,點選讀取資料,發現123456又回來了!

以上就是File儲存的基本用法了,希望各位學習愉快,如有不足希望指正

這是本人第一章部落格,嘗試著認真的去寫了,希望能細緻易懂,所以篇幅過大,今後會多加改正,謝謝大家!!

相關文章